2012-06-20 44 views
1

我有一個gridview控件,其中分頁啓用,我有一個datakey值,我想找到一個關於datakey值的行索引,我有這個碼,如何查找相對於datakey的行索引在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。更改頁面索引不會自動「加載」該頁面的DataKeys,以便您可以搜索每個頁面。

您將不得不通過添加一個函數來解決這個問題,該函數在給定userID時將返回要顯示的頁面。它可能被命名爲GetPageFromUserID(對象用戶ID)。此功能需要搜索數據存儲,使用與網格相同的排序順序,頁面大小和過濾條件。

即使使用該頁面索引(您將設置到GridView.PageIndex屬性中),仍然必須調用GridView上的DataBind()以便從其中加載行(和DataKeys)數據庫,以便您可以使用上面的代碼來查找行索引。

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

這裏你所選擇的數據的用戶ID在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> 

ü[R做分頁概念的GridView,它做的更好的後端本身,那麼這將便於u到顯示數據即你一次獲得10個數據,同時點擊第一頁像智慧..我在中繼器做的相同的概念,這是很容易,當與gridview相比...

相關問題