使用Control通过ASPxDateEdit过滤ASPxGridView

时间:2011-07-01 12:07:51

标签: datetime data-binding filter devexpress aspxgridview

我想通过在dateedit中选择日期和时间来过滤我的gridview。我放了一个具有DataBind()控件的按钮。 GridView的DataSource的查询有一个WHERE子句。它有一个控制连接gridview和dateedit。当我测试查询时,它工作正常。我启用了ButtonClick事件并将以下代码写入:

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

正如你所看到的,我绑定了我需要的所有东西。但是,当我选择日期和时间并单击按钮时,不显示任何项目。我错过了什么?如果你帮忙,我感激不尽。

2 个答案:

答案 0 :(得分:1)

我是DevExpress ASP.NET技术推广人员,Mehul。

有很多方法可以解决这个问题,但我建议使用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

谢谢,希望有所帮助。

答案 1 :(得分:0)

不幸的是,您没有发布显示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数据库中的Orders表测试了网格。另外,为了测试您的查询,我建议您处理SQLDataSource的Selecting事件并检查e.Command和e.Argumets参数。我希望,这些信息对您有所帮助。