我的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属性为空,而其他所有属性都是正确的。实际上,我已经尝试了很多其他的东西,但这似乎是最贴近目标的。
此致,我感谢您的一切帮助!
答案 0 :(得分:4)
您确定返回的项目不是标题或类似内容吗?我认为标题包含在结果中,但可能是错误的。添加一个支票,如:
var item = rgd_grid.MasterTableView.Items[0] as GridDataItem;
if (item != null)
string text = item["Unique"].Text;
如果这不起作用,您可以随时使用模板中的Label控件,并按ID查找控件。
答案 1 :(得分:2)
您应该使用datakeys从网格中检索值。
您可以使用DataKeyNames
上的MasterTableView
属性来指定所需的列,如下所示:
<telerik:RadGrid ID="RadGrid1" runat="server" ...>
<MasterTableView DataKeyNames="Col1, Col2, Col3" ...>
然后在代码隐藏中:
string col1 = RadGrid1.Items[0].GetDataKeyValue("Col1").ToString();
答案 2 :(得分:0)
这是另一种方式,因为我使用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();
}
}