2013-06-14 2 views
0

웹을 검색하여 예제를 찾았지만 여전히 올바르게 표시됩니다. DataGrid에 여러 개의 데이터 키가 있는데 범위를 벗어난 인덱스에서 인덱스를 가져옵니다. 누군가 나를 도울 것입니다. 미리 감사드립니다.ItemDataBound에서 데이터 키 값을 가져 오지 못했습니다.

나는 또한 다음과 같은 코드를 시도

Select Case e.Item.ItemType 
      Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem 

       Dim currentItem As DataGridItem = CType(e.Item, DataGridItem) 
       Dim dKey As DataKey = Me.dgrTranscripts.DataKeys(currentItem.ItemIndex) 
       Dim cn As String = dKey("Description").ToString() 
    end select 

하여 ItemDataBound에 값을 검색하려면 코드가 내 영문

<asp:datagrid id="dgrTrans" runat="server" autogeneratecolumns="False" gridlines="Both" borderstyle="NotSet" cssclass="dgrd w97p" cellpadding="2" 
            horizontalalign="center" datakeyNames="ID, Description" > 

있습니다,하지만 난에 ""문자열에서 변환 "를 얻을 'Integer'유형이 유효하지 않습니다. " 오류

Dim cn As String = dgrTranscripts.DataKeys(e.Item.DataItem("Description)).ToString 

답변

0

두 개의 키만 있기 때문에 색인은 0 또는 1 일 수 있습니다. currentitem.ItemIndex와 동일한 인덱스를 사용하여 DataKey를 검색하려고합니다. 많은 항목만큼 커질 수 있으므로 범위를 벗어난 오류가 발생합니다. 0 또는 1을 DataKey 인덱스로 사용해야합니다.

대신 ItemDataBound, 그 값을 얻기 위해 모든 행을 통해 DataBound 이벤트 및 루프를 사용 : 당신은 당신이하려고하는 정확하게 지정하지 않았기 때문에 나는

편집 ... 당신에게 확실한 대답을 줄 수 없습니다. 여기 ItemDataBoundGridView

Protected Sub GridView1_RowDataBound(sender As Object, e As EventArgs) Handles GridView1.DataBound 
    For Each row As GridViewRow In GridView1.Rows 
     Dim cn = GridView1.DataKeys(row.RowIndex).Value 
    Next 
End Sub 

와 예입니다, 데이터 그리드는 키가 아직 있다는 것을 알 수 없습니다. 그들은에 할당됩니다 DataBound

+0

나는 문자열에 데이터 키 ID를 할당하고 싶습니다. 나는 아직도 문제가있다. 다시 도와 주겠습니까 –

+0

dgrTranscripts.DataKeys.count를 사용하여 datakey collocetion을 검사했는데 0입니다. 지금 완전히 혼란스러워합니다. 내 코드에서 무엇이 잘못 되었습니까? –

+0

라이프 사이클의 어느 시점에서 카운트를 확인 했습니까? 또한 값을 검색하려는 위치는 어디입니까? 더 많은 코드를 게시 할 수 있습니까? 'DataBound' 이벤트에서 시도하십시오 –

관련 문제