我有一个DataGrid,其数据源是一个对象集合。现在,数据网格设置为仅显示对象属性的子集。隐藏属性之一是ID变量,一旦选择了与该对象相对应的行,我需要获取该ID变量。
我知道你可以使用SelectIndexChanged事件处理程序来监听行点击次数....但是如何才能获得对应的实际原始对象呢?
答案 0 :(得分:1)
我看到你用“Telerik”标记了你的问题。
您使用的是DataGrid还是RadGrid?是。
然后指定在.aspx文件中调用哪个事件:
<telerik:RadGrid ID="RadGrid1" runat="server"
AutoGenerateColumns="False"
GridLines="None"
OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged" >
(...)
</telerik:RadGrid>
并在.asp文件中声明该事件:
protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e)
{
var dataItem = e.Item.DataItem;
if (dataItem != null)
{
int dataItemID = (dataItem As ObjectClassName).ID;
}
}
*将“ObjectClassName”替换为您的对象类型。
答案 1 :(得分:0)
您可以访问DataItem
,然后将项目转换为适当的类型并从那里访问其属性
快速link显示了如何实现这一目标。
答案 2 :(得分:0)
使用Telerik RadGrid时,您应该使用Telerik API,它提供了您可以设置的2个属性:DataKeyNames和ClientDataKeyNames。只要列出现在您的初始数据源中,您在这两个属性中指定的任何内容都可以访问服务器端和客户端。下面包括如何在SelectedIndexChanged(服务器端)和OnRowSelected(客户端)上获取这些值
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false"
OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged">
<MasterTableView DataKeyNames="Id,HiddenVal1,HiddenVal2" ClientDataKeyNames="Id,HiddenVal1,HiddenVal2,clientsideSpecialId">
<Columns>
<telerik:GridButtonColumn CommandName="Select" Text="Select" UniqueName="SelectColumn" />
<telerik:GridBoundColumn UniqueName="ContactName" HeaderText="Contact name" DataField="ContactName" />
<telerik:GridBoundColumn UniqueName="ContactTitle" HeaderText="Contact title" DataField="ContactTitle" />
</Columns>
</MasterTableView>
<ClientSettings>
<ClientEvents OnRowSelected="RowSelected"/>
</ClientSettings>
</telerik:RadGrid>
检索所选索引的隐藏字段值服务器端已更改:
protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e)
{
if (RadGrid1.SelectedItems == null || RadGrid1.SelectedItems.Count == 0)
return;
var dataItem = RadGrid1.SelectedItems[0] as GridDataItem;
if (dataItem != null)
{
var myId = dataItem.GetDataKeyValue("id").ToString();
var hiddenfield1 = dataItem.GetDataKeyValue("HiddenVal1").ToString();
//do stuff
}
}
然后使用ClientEvents OnRowSelected
在行选择上检索隐藏字段值客户端function RowSelected(sender,eventArgs)
{
var HiddenVal1 = eventArgs.getDataKeyValue("HiddenVal1")
//do stuff
}