2012-06-20 4 views
1

페이징을 사용할 수있는 gridview 컨트롤이 있습니다. 데이터 키 값이 있습니다. 데이터 키 값과 관련하여 행 인덱스를 찾고 싶습니다. 코드는GridView asp.net에서 데이터 키에 관한 행 인덱스를 찾는 방법

protected int GetRowIndex(object userID) 
{ 
    for(int i = 0l i <= GridView1.DataKey.Count -1 ; i++) 
    { 
    if(GridView1.DataKey[i].Value == userID) 
    { 
     return i; 
    } 

    } 

}

하지만 문제는 해당 사용자 ID가 해당 페이지에서 발견되지 않는 경우는 0을 반환 것,이 코드가, 내 질문에 내가 어떻게에 페이지 색인을 변경할 수 있다는 것입니다 모든 페이지에서 행을 찾으십시오. 나는 gridview 자신의 페이징을 사용하고 있습니다.

답변

1

GridView가 검색을 위해 어딘가에 저장되어있는 DataKeys를 가지고 있지 않기 때문에 이에 대한 직접적인 지원은 없습니다. 현재 페이지에 사용하는 DataKeys 만 유지합니다. 페이지 인덱스를 변경해도 해당 페이지에 대한 데이터 키가 자동으로로드되지 않으므로 각 페이지를 검색 할 수 있습니다.

userID가 주어지면 표시 할 페이지를 반환하는 함수를 추가하여이 문제를 해결해야합니다. GetPageFromUserID (object userID)로 명명 될 수 있습니다. 이 함수는 그리드와 동일한 정렬 순서, 페이지 크기 및 필터 조건을 사용하여 데이터 저장소를 검색해야합니다.

GridView.PageIndex 속성에 설정하는 해당 페이지 인덱스가있는 경우에도 행 (및 데이터 키)을로드하기 위해 GridView에서 DataBind()를 호출해야합니다. 위의 코드를 사용하여 행 인덱스를 찾을 수 있도록 데이터베이스. 여기

-1
string user_id = GridView1.SelectedDataKey["userID"].ToString(); 

당신은있는 gridview

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
      DataKeyNames="userID" OnRowDataBound="GridView1_RowDataBound" 
       OnSelectedIndexChanged="GridView1_SelectedIndexChanged" > 

    <asp:CommandField ShowSelectButton="True"> </asp:CommandField> 

    // write code 

    </asp:GridView> 

U가있는 gridview에 페이지 매김 개념을하고 R, 그것의 더 나은 백엔드 자체 수행 한 후 쉽게 u는 표시됩니다에 대한 데이터에서 선택한 데이터의 사용자 ID를 얻을 수 즉 u 현명한 .. 같은 첫 페이지를 클릭하는 동안 한 번에 10 개의 데이터를 가져옵니다. 동일한 개념을 제가 gridview와 비교할 때 쉽게 반복기에서 수행했습니다 ...