获取Telerik RadGrid的行

16

我正在处理一个RadGrid,但是我想访问它的行,但似乎它没有.Rows属性。

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

enter image description here

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

3个回答

10
根据Telerik的文档,网格中的每个动态行都代表指定数据源中的一条记录。动态行由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)
  {
  }
}

3

我假设这是一个WPF / Silverlight RadGrid?

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

rgCustomers.ItemContainerGenerator.ContainerFromIndex(0);

或者

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

将返回第一行控件(如果我记得正确的话,是RadGridViewRow类型)


如果我想迭代行,我应该做同样的事情吗? - Mahdi Tahsildari
我正在使用Telerik.Web.UI.RadGrid。 - Mahdi Tahsildari
啊,这是Asp.net控件。我的解决方案基于WPF/Silverlight。抱歉,我不太了解Web控件。 - Varius

1

- 如果您想在每行上添加按钮:

GridTemplateColumnGridButtonColumn 可以实现。

- 如果您想访问当前行:

  1. Use the OnClick event handler of the button.

    <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>
    
  2. Get a reference to the GridDataItem using (sender as RadButton).NamingContainer.

    protected void BTN_BL_Click(object sender, EventArgs e)
    {
        GridDataItem G = ((RadButton)sender).NamingContainer as GridDataItem;
    }
    
  3. Use GetDataKeyValue() method to extract the record ID:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接