2012-10-12 15 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> 

Szenario: - oben ist das Markup einer Telerik Bei RagGrid Kontrolle ich verwende. Ich versuchte, die KeyValue des Gridcolumn, die übliche Art und Weise zuzugreifen,So holen Sie 'KeyValue' von Telerik RadGrid?

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

Dies funktioniert nicht. Gibt es eine Alternative?

+1

Warum Sie die Eigenschaft "DataKeyNames" auf RadGrid angeben? Versuchen Sie, es zu entfernen und behalten Sie es nur für "MasterTableView" –

Antwort

17

Versuchen.

+0

Wenn obige Code für Sie nicht funktioniert dann bitte sagen Sie mir, in welchem ​​Fall Sie diesen Datakey bewerten möchten. –

+0

Es funktioniert. Das Problem war etwas anderes. – MontyPython

+0

Wenn Sie das Problem gefunden haben, warum veröffentlichen Sie die Lösung nicht? –

3

dies mit folgendem Code-Schnipsel Bitte versuchen Sie

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

Sie versuchen, einen Datenschlüssel zuzugreifen, die nicht einmal in der RadGrid Markup angegeben:

DataKeyNames="ClientID" 

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

Es soll:

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

Warum sollte es "ClientID" sein. Es kann DataKeyNames = "ID, Name, Stadt, etc, etc, etc" sein. – MontyPython

+0

Wir greifen auf unsere Daten über mastertableview datakeynames und nicht radgrid datakeynames zu. – MontyPython

+0

Ich sah es als "ClientID" auf dem Markup definiert. Ich schlug vor, den Code zu ändern, in dem Sie den Wert auch abgerufen haben, um dem definierten Schlüsselname zu entsprechen. Das ist es. Sie können es ändern, was Sie wollen. –

2

Ihre Datenschlüssel in Markup definieren:

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

und Zugriff in Code beh ind:

GridDataItem item = (GridDataItem)e.Item; 

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