Фильтрация ASPxGridView с помощью ASPxDateEdit с использованием Control

Я хочу отфильтровать сетку, выбрав дату и время в dateedit. Я поставил кнопку с элементами управления DataBind (). Запрос источника данных GridView имеет предложение WHERE. У него есть Control, соединяющий gridview и dateedit. Когда я тестирую запрос, он работает нормально. Я включил событие ButtonClick и написал в него следующий код:

protected void ASPxButton2_Click(object sender, EventArgs e)
{
    DateEdit.DataBind();
    SQLDataSource.DataBind();
    ASPxGridView.DataBind();
}

Как видите, я связал все, что мне нужно. Но никакие элементы не отображаются, когда я выбираю дату и время и нажимаю кнопку. Я что-то пропустил? Буду признателен, если вы поможете.


person Egemen Hamutçu    schedule 01.07.2011    source источник


Ответы (2)


Я технический евангелист DevExpress ASP.NET, Мехул.

Есть много способов приблизиться к этому, но я рекомендую использовать элемент управления ASPxGridLookup, который дает вам сетку в раскрывающемся списке: http://demos.devexpress.com/ASPxGridViewDemos/ASPxGridLookup/FilterServerMode.aspx

Вы также можете использовать встроенные функции: http://www.devexpress.com/Support/Center/p/Q267406.aspx Или попробуйте этот пример: http://www.devexpress.com/Support/Center/e/E2040.aspx

Некоторые из них также могут вам помочь: http://search.devexpress.com/?q=filter+external&p=T4|P5|57

Чтобы ответить на ваш исходный вопрос, в этом примере показано, как выполнить привязку данных при нажатии внешней кнопки: http://www.devexpress.com/Support/Center/e/E1662.aspx

Спасибо, надеюсь, это поможет.

person Mehul    schedule 02.07.2011

К сожалению, вы не опубликовали код, показывающий, как настраивается SQLDataSource. Однако я попытался воспроизвести эту проблему и потерпел неудачу. Вот мой код:

<dx:ASPxGridView ID="gvSupply" ClientInstanceName="gvSupply" Width="100%" 
    DataSourceID="SqlDataSource3" KeyFieldName="OrderID" AutoGenerateColumns="False" runat="server">
    <Columns>
        <dx:GridViewDataTextColumn FieldName="OrderID" ReadOnly="True" VisibleIndex="0">
            <EditFormSettings Visible="False" />
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="CustomerID" VisibleIndex="1">
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="EmployeeID" VisibleIndex="2">
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataDateColumn FieldName="OrderDate" VisibleIndex="3">
        </dx:GridViewDataDateColumn>
    </Columns>
</dx:ASPxGridView>

<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [Orders] WHERE ([OrderDate] = ?)">
            <SelectParameters>
                <asp:ControlParameter ControlID="ASPxDateEdit1" Name="OrderDate" PropertyName="Value"
                    Type="DateTime" />
            </SelectParameters>
        </asp:SqlDataSource> 


        <dx:ASPxDateEdit ID="ASPxDateEdit1" runat="server">
        </dx:ASPxDateEdit>

        <asp:Button ID="Button1" runat="server" Text="Button" />

Я протестировал сетку с таблицей заказов из базы данных Northwind. Кроме того, чтобы проверить свой запрос, я предлагаю вам обработать Выбор события SQLDataSource и проверьте параметры e.Command и e.Argumets. Надеюсь, эта информация будет вам полезна.

person DevExpress Team    schedule 02.07.2011