<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>
シナリオ:-上記は、私が使用しているTelerikRagGridコントロールのマークアップです。通常の方法でGridColumnのKeyValueにアクセスしようとしました
Int32 key = Convert.ToInt32((e.Item as GridDataItem).GetDataKeyValue("ID"));
これは機能していません。代替手段はありますか?
以下のコードスニペットを試してください。
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");
Radgridマークアップで指定されていないデータキーにアクセスしようとしています。
DataKeyNames="ClientID"
Int32 key = Convert.ToInt32(dataItem.GetDataKeyValue("ID"));
そのはず:
Int32 key = Convert.ToInt32(dataItem.GetDataKeyValue("ClientID"));