Как получить "KeyValue" от Telerik RadGrid?
<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 обычным способом,
Int32 key = Convert.ToInt32((e.Item as GridDataItem).GetDataKeyValue("ID"));
Это не работает. Есть ли альтернатива?
4 ответов
пожалуйста, попробуйте С ниже фрагмент кода.
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
// NORMAL MODE
GridDataItem item = e.Item as GridDataItem;
string strId = item.GetDataKeyValue("ID").ToString();
}
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
if (e.Item is GridEditFormInsertItem)
{
// INSERT MODE
GridEditableItem editedItem = e.Item as GridEditableItem;
}
else
{
// EDIT MODE
GridEditableItem editedItem = e.Item as GridEditableItem;
string strId = editedItem.GetDataKeyValue("ID").ToString();
}
}
}
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "YourCommandName")
{
GridDataItem item = e.Item as GridDataItem;
string strId = item.GetDataKeyValue("ID").ToString();
}
}
попробуй такое
string keyValue = radGrid.MasterTableView.DataKeyValues[e.item.ItemIndex].ToString();
int key = Convert.ToInt32(keyValue);
определите ключ данных в разметке:
< MasterTableView datakeynames="ID" dir="RTL">< /MasterTableView>
и получить доступ в коде:
GridDataItem item = (GridDataItem)e.Item;
var key = item.GetDataKeyValue("ID");
вы пытаетесь получить доступ к datakey, который даже не указан в разметке radgrid:
DataKeyNames="ClientID"
Int32 key = Convert.ToInt32(dataItem.GetDataKeyValue("ID"));
должно быть:
Int32 key = Convert.ToInt32(dataItem.GetDataKeyValue("ClientID"));