从服务器端(Telerik RadGrid)的gridtemplatecolum列中检索值
本文关键字:gridtemplatecolum 检索 服务器端 Telerik RadGrid | 更新日期: 2023-09-27 18:10:53
我有以下代码在我的aspx页面(简化):
<telerik:RadGrid ID="rgd_grid" runat="server">
<MasterTableView>
<Columns>
<telerik:GridTemplateColumn UniqueName="Unique" HeaderText="Header" DataField="dataField">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "expression") %>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
我只需要在网格中做一个循环来检索代码后面的单元格的值,但我没有办法在"Eval"表达式中获得值…我尝试了以下方法:
rgd_grid.MasterTableView.Items[0]["Unique"].Text;
但是text属性是空的,而其他属性都是正确的。事实上,我已经尝试了很多其他的方法,但这似乎是最接近目标的。
此致敬礼,感谢大家的帮助!
您确定返回的项目不是标题或类似的东西吗?我认为标题包含在结果中,但可能是错误的。添加如下检查:
var item = rgd_grid.MasterTableView.Items[0] as GridDataItem;
if (item != null)
string text = item["Unique"].Text;
如果这不起作用,您总是可以在模板中使用Label控件,并通过ID找到该控件。
您应该使用datakeys从网格中检索值。
您可以在MasterTableView
上使用DataKeyNames
属性来指定您需要的列,如下所示:
<telerik:RadGrid ID="RadGrid1" runat="server" ...>
<MasterTableView DataKeyNames="Col1, Col2, Col3" ...>
然后在代码后面:
string col1 = RadGrid1.Items[0].GetDataKeyValue("Col1").ToString();
下面是另一种方法,因为我使用了DataBinder来获取文本内容并显示它:
protected void RadGrid_OnItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem dataItem = e.Item as GridDataItem;
var test = DataBinder.Eval(dataItem.DataItem, "Column").ToString();
}
}