获取 Telerik RadGrid 的行

Posted

技术标签:

【中文标题】获取 Telerik RadGrid 的行【英文标题】:Get rows of a Telerik RadGrid 【发布时间】:2012-08-02 04:56:42 【问题描述】:

我正在研究 RadGrid,我想访问它的行,但它似乎没有 .Rows 属性。

这是我到目前为止所尝试的:

如何访问rgCustomers 的行集合?我想为每一行添加一个按钮。

【问题讨论】:

【参考方案1】:

根据Telerik's documentation,

“网格中的每个动态行代表来自指定数据源的一条记录。动态行由 GridDataItem 类(GridItem 的后代)表示。

每个 GridTableView 都有一组 GridDataItem 类型的行(Items 集合)。"

所以你要使用网格的Items集合,它是GridDataItems的集合。

protected void btnLoad_Click(object sender, EventArgs e)

  rgCustomers.DataSource = odsCustomers;
  rgCustomers.DataBind();
  foreach (GridDataItem row in rgCustomers.Items)
  
  

【讨论】:

【参考方案2】:

我假设它是 WPF/Silverlight RadGrid?

如果您想访问数据绑定网格中的行控件(不是行数据) - 您必须使用 RadGrid 的 ItemContainerGenerator 属性。例如:

rgCustomers.ItemContainerGenerator.ContainerFromIndex(0);

rgCustomers.ItemContainerGenerator.ContainerFromItem(odsCustomers[0]);

将返回第一行控件(如果我没记错的话是 RadGridViewRow 类型)

【讨论】:

如果我想遍历行,我应该这样做吗? 我正在使用 Telerik.Web.UI.RadGrid 啊,它是 Asp.net 控件。我的解决方案是基于 WPF/Silverlight。抱歉,我不太了解 Web 控件。【参考方案3】:

- 如果你想在每一行添加一个按钮:

GridTemplateColumnGridButtonColumn 可以解决问题。

- 如果要访问当前行:

    使用按钮的 OnClick 事件处理程序。

    <telerik:RadButton ID="BTN_DEMO" runat="server" HeaderText="N°1 DEMO BTN"
    Text='<%#"Click Me iM N°"+((IhateEvalDataSource) Container.DataItem).Stuff_ID %>' 
    OnClick="BTN_DEMO_Click"></telerik:RadButton>
    

    使用 (sender as RadButton).NamingContainer 获取对 GridDataItem 的引用。

    protected void BTN_BL_Click(object sender, EventArgs e)
    
        GridDataItem G = ((RadButton)sender).NamingContainer as GridDataItem;
    
    

    使用GetDataKeyValue() method提取记录ID:

    DEMO_INT = (int)G.GetDataKeyValue("mySweetInt"); 
    DEMO_STRING = (string)G.GetDataKeyValue("MyString");
    

【讨论】:

以上是关于获取 Telerik RadGrid 的行的主要内容,如果未能解决你的问题,请参考以下文章

Telerik获取所选ID(从Radgrid选择项目中获取数据)

telerik radGrid - 在排序/分页/过滤器上保持客户端状态

telerik radGrid - 在排序/分页/过滤器上保持客户端状态

如何确定导致Telerik RadGrid错误System.InvalidCastException的原因

telerik:RadGrid 在表格中编辑更新数据

导出到telerik radgrid的Excel