ext.net: удаленная фильтрация с нумерацией страниц

http://examples.ext.net/#/GridPanel/Paging_and_Sorting/XML_WebService/ Я просто добавляю к этому примеру ext:GridFilters. Вот и все. Я протестировал этот пример с ext:GridFilters, но не дал мне отфильтрованных данных.

вот код aspx;

<html>
    <body>
        <form id="form1" runat="server">

            <ext:ResourceManager ID="ResourceManager1" runat="server" />

            <ext:GridPanel 
                runat="server" 
                ID="GridPanel1" 
                Title="Employees" 
                Frame="true" 
                Height="300">
                <Store>
                    <ext:Store 
                        ID="Store1" 
                        runat="server" 
                        RemoteSort="true" 
                        RemoteFilter="true"
                        AutoSync="false" RemotePaging="true"
                        PageSize="5">
                        <Proxy>
                            <ext:AjaxProxy Url="WebService1.asmx/PlantsPaging">
                                <ActionMethods Read="GET" />
                                <Reader>
                                    <ext:XmlReader Record="Plant" TotalProperty="TotalRecords" />
                                </Reader>
                            </ext:AjaxProxy>
                        </Proxy>
                        <Parameters>
                            <ext:StoreParameter Name="filter" Value="" Mode="Value" />
                        </Parameters>
                        <Model>
                            <ext:Model ID="Model1" runat="server">
                                <Fields>
                                    <ext:ModelField Name="Common" />
                                    <ext:ModelField Name="Botanical" />
                                    <ext:ModelField Name="Light" />
                                    <ext:ModelField Name="Price" Type="Float" />
                                    <ext:ModelField Name="Availability" Type="Date" />
                                    <ext:ModelField Name="Indoor" Type="Boolean" />
                                </Fields>
                            </ext:Model>
                        </Model>
                        <Sorters>
                            <ext:DataSorter Property="Common" Direction="ASC" />
                        </Sorters>
                    </ext:Store>
                </Store>
                        <Features>
                                <ext:GridFilters ID="GridFilters1" runat="server" Local="false" >
                                    <Filters>
                                         <ext:StringFilter DataIndex="Common" />
                                        <ext:StringFilter DataIndex="Botanical" />


                                    </Filters>
                                </ext:GridFilters>
                            </Features>
                <ColumnModel ID="ColumnModel1" runat="server">
                    <Columns>
                        <ext:Column ID="Column1" runat="server" Text="Common Name" DataIndex="Common" Sortable="true" Flex="1"  />
                        <ext:Column ID="Column2" runat="server" Text="Botanical" DataIndex="Botanical" Width="230" />
                        <ext:Column ID="Column3" runat="server" Text="Light" DataIndex="Light" Width="130" />
                        <ext:Column ID="Column4" runat="server" Text="Price" DataIndex="Price" Width="70" Align="right" />
                        <ext:DateColumn ID="DateColumn1" runat="server" Text="Available" DataIndex="Availability" Width="95" Format="yyyy-MM-dd" />
                        <ext:Column ID="Column5" runat="server" Text="Indoor?" DataIndex="Indoor" Width="55" />
                    </Columns>
                </ColumnModel>
                <View>
                    <ext:GridView ID="GridView1" runat="server" LoadingText="Loading XML..." />
                </View>          
                <BottomBar>
                    <ext:PagingToolbar ID="PagingToolbar1"
                        runat="server"                     
                        DisplayInfo="true" 
                        DisplayMsg="Displaying plants {0} - {1} of {2}" 
                        EmptyMsg="No plants to display" 
                        />
                </BottomBar>
            </ext:GridPanel>
        </form>

    </body>
    </html>

Я вызываю этот метод в веб-службе,

 public Paging<Plant> PlantsPaging(int start, int limit, string sort, string filter)
        {

}

но фильтр становится пустым.


person sakir    schedule 29.07.2013    source источник
comment
в чем именно проблема? Фильтры не работают или получают нулевое исключение или что происходит?   -  person MMMagic    schedule 29.07.2013
comment
проблема в том; ‹ext:StoreParameter Name=filter Value= Mode=Value /› получить пустое значение.   -  person sakir    schedule 29.07.2013
comment
Я думаю, мне нужна связь между параметром магазина и фильтром сетки, но не уверен   -  person sakir    schedule 29.07.2013
comment
Я попробовал это, но получил пустое значение; ‹ext:StoreParameter Name=значение фильтра=App.gridMusteriBilgileri.getFilterPlugin().getFilter('AdSoyAdUnvan').getValue(); Режим=Необработанный/›   -  person sakir    schedule 31.07.2013


Ответы (1)


GridFilters с Local="false" автоматически отправляет значения фильтров. Вам не нужно вводить в StoreParameter.

Имя параметра по умолчанию — «фильтр». Однако следующая подпись

[WebMethod]
public Paging<SomeEntity> GetData(int start, int limit, string sort, string filter) 

может вызвать проблему для первоначального запроса на загрузку, так как GridFilters отправляет добавляет параметр фильтра только в том случае, если применяется какой-либо фильтр. Таким образом, если параметр фильтра отсутствует, WebService выдаст ошибку.

Итак, я могу порекомендовать вам использовать класс StoreRequestParameters.

[WebMethod]
public Paging<SomeEntity> GetData()
{
    StoreRequestParameters parameters = new StoreRequestParameters(this.Context);
    return new Paging<SomeEntity>(...);
}
person Daniil Veriga    schedule 01.08.2013
comment
как я поймаю на стороне сервера??public Paging‹Musteri› PlantsPaging (int start, int limit, string sort, string filter). Это внутри переменной фильтра? - person sakir; 01.08.2013
comment
Да, это должно быть там. - person Daniil Veriga; 01.08.2013
comment
Я получаю эту ошибку.danill.System.InvalidOperationException: Отсутствует параметр: фильтр. в System.Web.Services.Protocols.ValueCollectionParameterReader.Read(коллекция NameValueCollection) в System.Web.Services.Protocols.UrlParameterReader.Read(запрос HttpRequest) в System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() в System.Web .Services.Protocols.WebServiceHandler.CoreProcessRequest() - person sakir; 01.08.2013
comment
ок, я выразился так: ‹Параметры› ‹ext:StoreParameter Name=filter Value= Mode=Value /› ‹/Parameters›, но получаю пустое значение?? - person sakir; 01.08.2013
comment
Проблема все та же. Я получаю пустое значение внутри переменной фильтра, поэтому я попытался поместить значение gridfilter в параметр хранилища. - person sakir; 01.08.2013
comment
Пожалуйста, обновите вопрос, указав полный тестовый пример для воспроизведения. Я рассмотрю. - person Daniil Veriga; 12.08.2013
comment
Спасибо. Кажется, я понял проблему. Обновлен ответ, пожалуйста, просмотрите. - person Daniil Veriga; 16.08.2013
comment
Мне удалось получить предельные начальные значения, но как я могу получить значение фильтра? Я попробовал параметры.GridFilters.Conditions//(я не знаю, как я его использую), а также параметры. нулевое исключение ошибка обоих из них - person sakir; 16.08.2013
comment
плюс, в чем разница между filter и gridfilter - person sakir; 16.08.2013
comment
Эммм, Даниил, для меня важно, если ты дашь мне быстрый ответ. Еще раз спасибо - person sakir; 19.08.2013
comment
хорошо, я могу достичь таких значений. фильтр = параметры.GridFilters.Conditions[0].Property.Value.ToString(); поле фильтра = параметры.GridFilters.Conditions[0].Field.ToString(); - person sakir; 28.08.2013