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

Escenario: - Dado anterior es el margen de beneficio de un control de Telerik RagGrid que estoy utilizando. He intentado acceder a la KeyValue del GridColumn, de la forma habitual,¿Cómo recuperar 'KeyValue' de Telerik RadGrid?

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

esto no está funcionando. ¿Hay un alterno?

+1

¿Por qué especifica la propiedad 'DataKeyNames' en RadGrid? Intente eliminarlo y retenerlo solo para 'MasterTableView' –

Respuesta

17

Por favor, intente con el siguiente fragmento de código.

+0

Si el código anterior no funciona para usted, por favor dígame en qué evento desea evaluar esta clave de datos. –

+0

Está funcionando. El problema era otra cosa. – MontyPython

+0

Si encontró el problema, ¿por qué no publica la solución? –

3

probar este

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

Usted está tratando de acceder a una clave de datos que ni siquiera se especifica en el marcado RadGrid:

DataKeyNames="ClientID" 

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

que debe ser:

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

¿Por qué debería ser 'ClientID'? Puede ser DataKeyNames = "ID, Nombre, Ciudad, etc., etc.". – MontyPython

+0

Accedemos a nuestros datos a través de los nombres de datos masterview y no los nombres de claves de datos de la red. – MontyPython

+0

Lo vi definido como "ClientID" en el marcado. Sugerí cambiar también el código donde recuperó el valor para que coincida con el nombre clave definido. Eso es. Puedes cambiarlo a lo que quieras. –

2

definir su clave de datos en el marcado:

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

y el acceso en código Beh ind:

GridDataItem item = (GridDataItem)e.Item; 

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