2017-05-03 1 views
-1

ListView의 멤버 인 ListViewDataItem의 데이터 키에 액세스하는 방법이 궁금합니다.ListViewDataItem 데이터 키에 액세스하는 방법

는 내가 이상한 찾으를 디버깅 할 때하는 것은, 그것은 불가능 코딩시 DataKeyContainer에 액세스하려고 할 때 그러나 또한 될 수있는 여기

enter image description here

을 볼 수있는 DataKeysContainer에 액세스 할 수 있다는 것입니다 ListViewDataItem의 datakeys와 그 값에 액세스하는 방법에 여기

enter image description here

어떤 조언을 보여 주시면 감사하겠습니다.

+1

두 번째 스크린 샷에서 'ListViewItem' –

+0

@Afriend로 캐스팅되었습니다. 'For Each l ListViewDataItem'으로 변경하면 필요에 따라 작동합니다. – Jaxi

+0

사과, 어리석은 실수, 그러나 ListViewDataItem으로 변경하면 여전히 문제가 남아 있지만 데이터 키에 액세스 할 수 없습니다. 새롭고 업데이트 된 두 번째 스크린 샷을 참조하십시오. – AF1001

답변

0

지연 바인딩을 사용할 수 있습니다. 즉, 루프 변수를 Object에 입력하십시오. 이렇게하면 런타임에 멤버에 액세스 할 때까지 멤버 유효성 검사를 연기 할 수 있습니다. 그것은 C#에서 dynamic과 비슷합니다. 당신이이 ListView 알고 있기 때문에

For Each itemObject As Object In lstViewModules.Items 
    ' the DataKeysContainer you were looking for 
    Dim container = CType(itemObject.DataKeysContainer, Control) 
    ' the same l in your loop 
    Dim l = CType(itemObject, ListViewDataItem) 
    ' from here on, the rest of your loop code should work 
    Dim key As DataKey = lstViewModules.DataKeys(l.DataItemIndex) 
    Dim value = key("name") 
Next 

은 또한 디자인 타임 쉽게 ListViewcontainer 캐스팅 할 수있다.

참고 :이 작업을 수행하려면 Option Strict Off이어야합니다.

+1

대단히 감사합니다. 내 머리카락 하나 하나를 꺼내 주셔서 고맙습니다. – AF1001

+0

그냥 면책 조항, 이것은 디자이너의 원래의 의도를 우회하고 절대적으로 필요한 경우에만 사용해야합니다 :) – djv

+0

오, 알았어, 잘 시간이 좀 도와 줘서 아주 유용한 지식을 가지고. 다시 한번 당신의 도움에 감사드립니다. – AF1001

관련 문제