2012-10-12 36 views
9
<telerik:RadGrid ID="radGrid" runat="server" AllowPaging="true" AllowCustomPaging="True" 
    GridLines="None" PageSize="20" AllowMultiRowSelection="true" ClientSettings-Selecting-AllowRowSelect="true" 
    AutoGenerateColumns="false" onneeddatasource="radGrid_NeedDataSource" OnItemCreated="radGrid_ItemCreated" 
    OnItemDataBound="radGrid_ItemDataBound" OnItemCommand="radGrid_ItemCommand" 
    DataKeyNames="ClientID"> 
    <mastertableview datakeynames="ID" gridlines="None" width="100%"> 
    <PagerTemplate> and so on ... </telerik:RadGrid> 

場景: - 上面給出了我正在使用的Telerik RagGrid控件的標記。我試圖訪問的GridColumn,通常的方式的鍵值,如何從Telerik RadGrid獲取'KeyValue'?

Int32 key = Convert.ToInt32((e.Item as GridDataItem).GetDataKeyValue("ID")); 

這是行不通的。有替代品嗎?

+1

爲什麼在RadGrid上指定'DataKeyNames'屬性?嘗試刪除它並僅保留它'MasterTableView' –

回答

17

請與下面的代碼片段嘗試。

+0

如果上面的代碼不適合你,那麼請告訴我你想評估這個數據鍵的事件。 –

+0

它正在工作。問題是別的。 – MontyPython

+0

如果您發現問題,爲什麼不發佈解決方案? –

3

試試這個

string keyValue = radGrid.MasterTableView.DataKeyValues[e.item.ItemIndex].ToString(); 
int key = Convert.ToInt32(keyValue); 
0

您試圖訪問甚至沒有在radgrid控件標記指定的datakey:

DataKeyNames="ClientID" 

Int32 key = Convert.ToInt32(dataItem.GetDataKeyValue("ID")); 

它應該是:

Int32 key = Convert.ToInt32(dataItem.GetDataKeyValue("ClientID")); 
+0

爲什麼應該是'ClientID'。它可以是DataKeyNames =「ID,名稱,城市等等,等等」。 – MontyPython

+0

我們通過mastertableview datakeynames而不是radgrid datakeynames訪問我們的數據。 – MontyPython

+0

我看到它在標記上定義爲「ClientID」。我建議更改您檢索值的代碼以匹配定義的鍵名。而已。你可以改變它到任何你想要的。 –

2

定義你的數據密鑰標記:

< MasterTableView datakeynames="ID" dir="RTL">< /MasterTableView> 

and access in code beh ind:

GridDataItem item = (GridDataItem)e.Item; 

var key = item.GetDataKeyValue("ID");