Получить строки Telerik RadGrid

Я работаю над RadGrid, и я хочу получить доступ к его строкам, но, похоже, у него нет .Rows собственность.

вот что я пробовал до сих пор:

enter image description here

Как я могу получить доступ к rgCustomersколлекция строк? Я хочу добавить кнопку в каждую строку.

3 ответов


по данным из Telerik документации,

" каждая динамическая строка в сетке представляет запись из указанного источника данных. Динамические строки представлены классом GridDataItem (потомок GridItem).

каждый GridTableView имеет набор строк (коллекция элементов) типа GridDataItem."

таким образом, вы хотите использовать коллекцию элементов сетки, которая является коллекцией GridDataItems.

protected void btnLoad_Click(object sender, EventArgs e)
{
  rgCustomers.DataSource = odsCustomers;
  rgCustomers.DataBind();
  foreach (GridDataItem row in rgCustomers.Items)
  {
  }
}

Я предполагаю, что это WPF / Silverlight RadGrid?

Если вы хотите получить доступ к управлению строками в сетке базы данных (а не к данным строк) - вам придется использовать свойство ItemContainerGenerator RadGrid. Например:

rgCustomers.ItemContainerGenerator.ContainerFromIndex(0);

или

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

вернет управление первой строкой (типа RadGridViewRow, если я правильно помню)


- Если вы хотите добавить кнопку в каждой строке:

GridTemplateColumn или GridButtonColumn будет делать трюк.

- Если вы хотите получить доступ к текущей строке:

  1. используйте обработчик событий 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>
    
  2. получить ссылку на griddataitem с помощью (отправитель как RadButton).NamingContainer.

    protected void BTN_BL_Click(object sender, EventArgs e)
    {
        GridDataItem G = ((RadButton)sender).NamingContainer as GridDataItem;
    }
    
  3. использовать GetDataKeyValue() метод чтобы извлечь идентификатор записи:

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