2011-09-08 37 views
1

我有一個gridview,它有datakeynames="Id"通過Datakeynames獲取Gridview行

我在代碼文件中有該Id。現在我想獲取特定Id的行。

例如ID = 1的話,我想有ID = 1 我用這個代碼的GridView的行:

foreach (DataKey key in gdvMainList.DataKeys) 
       { 
        if (Convert.ToInt32(key.Value) == consentReleaseId) 
        { 
         gdvMainListRow = gdvMainList.Rows[index]; 
         break; 
        } 
        index++; 
       } 

有沒有更好的方法嗎?

回答

4

另一種選擇是循環GridView中的項目,直到找到匹配的鍵。

foreach (GridViewRow row in GridView1.Rows) 
{ 
    if (GridView1.DataKeys[row.RowIndex]["ID"] == consentReleaseId) 
    { 
     gdvMainListRow = row; 
     break; 
    } 
} 
1

另一種選擇是將行ID綁定到gridview行中的元素。大多數情況下,這發生在CommandArgument屬性的操作鏈接或按鈕上。

<asp:ButtonField ButtonType="Button" CommandName="Edit" Text="Edit" Visible="True" CommandArgument='<%# Container.DataItemIndex %>' /> 

類似的東西。然後,您可以訪問該項目並獲取行標識,而無需任何循環。

0

有一件事你應該小心你的apporach是,如果你有你的gridview分頁,並且如果你在不同的頁面,你可能最終拉出錯誤的行或行可能不會被發現。

相反循環,你可以在你的數據源使用LINQ查詢像

,如果你的數據源是一個列表, OBJ = lObjs.Where(I => i.Id == consentReleaseId)。首先()的;

如果你想改變網格中的東西,你可以在obj中改變它並改變數據源。