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

时间:2011-10-11 14:43:26

标签: c# asp.net telerik server-side radgrid

我的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属性为空,而其他所有属性都是正确的。实际上,我已经尝试了很多其他的东西,但这似乎是最贴近目标的。

此致,我感谢您的一切帮助!

3 个答案:

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