При использовании Telerik RadGrid вы должны использовать API Telerik, которые предоставляют вам 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
}