Как фильтровать RadGridItems из radgrid.Коллекция элементов?

#asp.net #telerik #radgrid

#asp.net #telerik #radgrid

Вопрос:

Я разрабатываю элементы управления Telerik для ASP.NET AJAX и работа с событием ItemCommand от RadGrid. Мне нужно отфильтровать / выбрать определенные элементы (или строки) из сетки.Коллекция элементов?

Вот моя разметка для кнопки в RadGrid.

 <telerik:GridButtonColumn runat="server" Text="Fill Days" ImageUrl="images/16/disk_blue.png" ButtonType="ImageButton" CommandName="FillDays" HeaderTooltip="Fill for this day" />
  

И код, лежащий в основе:

 Protected Sub myDatagrid_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles myDatagrid.ItemCommand

'as i have lots of rows in table, i don't want to loop through all items.

For Each gridDataItem As GridDataItem In myDatagrid.Items

Next

End Sub
  

Как мне отфильтровать эти элементы сетки, чтобы у меня были определенные элементы с определенным значением столбца?

Любое решение будет высоко оценено.

Ответ №1:

Я работаю на C #, но идея та же. Вы должны указать в MasteTable DataKeyName, который вы используете для индексации вашей таблицы.

 <telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" OnItemCommand="RadGrid1_ItemCommand" Culture="cs-CZ">
        <MasterTableView DataKeyNames="Id">
            <Columns>
                <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Default"/>
                </telerik:GridButtonColumn>
                <telerik:GridBoundColumn DataField="Id" FilterControlAltText="Filter column1 column" UniqueName="Id" Visible="false">
                </telerik:GridBoundColumn>
                <telerik:GridButtonColumn ButtonType="LinkButton" CommandName="Apply">
                </telerik:GridButtonColumn>
                ...
            </Columns>
        </MasterTableView>
    </telerik:RadGrid>
  

Затем используйте этот индекс:

 protected void RgFiltry_ItemCommand(object sender, GridCommandEventArgs e)
    {
        var filterId = (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"];

        switch (e.CommandName)
        {
            case "Apply":
                Apply(filterId);
                break;
            case "Default":
                SaveDefault(filterId);
                break;
            default:
                break;
        }
    }
  

Комментарии:

1. Ваш ответ позволяет найти данные конкретного элемента, например, идентификатор, используя DataKeyValues. Я не хочу это получать, мне нужно выбрать определенные элементы из myDatagrid. Коллекция элементов, например, если в ней десять элементов, мне нужно выбрать из нее 5 элементов.

2. Хм, боюсь, я не смогу вам помочь. Если вам нужно сохранить данные в сетке, вы должны перебирать их. Но если вы хотите использовать, например, подкачку сетки, я думаю, что myDatagrid . Элементы будут возвращать только активную страницу…