从服务器端(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属性是空的,而其他属性都是正确的。事实上,我已经尝试了很多其他的方法,但这似乎是最接近目标的。

此致敬礼,感谢大家的帮助!

从服务器端(Telerik RadGrid)的gridtemplatecolum列中检索值

您确定返回的项目不是标题或类似的东西吗?我认为标题包含在结果中,但可能是错误的。添加如下检查:

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();                
        }
    }