devexpress aspxgridview 没有过滤

devexpress aspxgridview is not filtering

我有这个 devexpress gridview:

 <dxwgv:ASPxGridView ID="ASPxGridView1" runat="server" DataSourceID="userDS" AutoGenerateColumns="False" Width="100%" KeyFieldName="contractId" >
        <Styles>
            <Header ImageSpacing="10px" SortingImageSpacing="10px">
            </Header>
        </Styles>
        <SettingsEditing Mode="EditForm" />
        <SettingsPager PageSize="39" ShowDefaultImages="False">
            <AllButton Text="All">
            </AllButton>
            <NextPageButton Text="Next &gt;">
            </NextPageButton>
            <PrevPageButton Text="&lt; Prev">
            </PrevPageButton>
        </SettingsPager>

        <Settings ShowFilterRow="True" ShowFilterRowMenu="true" />
        <Columns>
            <dxwgv:GridViewCommandColumn VisibleIndex="0" Width="55px">
                <EditButton Visible="True">
                </EditButton>
                <DeleteButton Visible="False">
                </DeleteButton>
                <HeaderTemplate>
                </HeaderTemplate>
            </dxwgv:GridViewCommandColumn>
            <dxwgv:GridViewDataTextColumn FieldName="contractId" ReadOnly="True" Visible="false"
                VisibleIndex="1">
            </dxwgv:GridViewDataTextColumn>
            <dxwgv:GridViewDataTextColumn FieldName="usergroupId" Caption="adult usergroupId" ReadOnly="true" VisibleIndex="2">
            </dxwgv:GridViewDataTextColumn>
            <dxwgv:GridViewDataTextColumn FieldName="adultCode" Caption="educ. reg. code" VisibleIndex="3" ReadOnly="True" Visible="true">
            </dxwgv:GridViewDataTextColumn>
            <dxwgv:GridViewDataTextColumn FieldName="accessLevel" VisibleIndex="3" ReadOnly="True" Visible="true">
                <Settings AutoFilterCondition="Like" />
            </dxwgv:GridViewDataTextColumn>
            <dxwgv:GridViewDataTextColumn Settings-AllowAutoFilter="True" FieldName="adultId" ReadOnly="True" Caption="adult userId" Visible="true"
                VisibleIndex="9">
            </dxwgv:GridViewDataTextColumn>
            <dxwgv:GridViewCommandColumn ShowClearFilterButton="true" ShowApplyFilterButton="true" VisibleIndex="1" />
        </Columns>

    </dxwgv:ASPxGridView>

    <dxexport:ASPxGridViewExporter ID="gridExport" runat="server" GridViewID="ASPxGridView1"></dxexport:ASPxGridViewExporter>

    <asp:SqlDataSource ID="userDS" runat="server"
        ConnectionString="<%$ ConnectionStrings:connstring %>"
        SelectCommand="GetAllUserAdultChildGroup"
        OnDeleting="deleting" OnUpdating="updating">
    </asp:SqlDataSource>

以及后端代码:

protected void Page_Load(object sender, EventArgs e)
        {
            //change the db cx string for the SqlDataSource to more robust code
            string connString = ConfigurationManager.ConnectionStrings["connstring"].ConnectionString;

            userDS.ConnectionString = connString;

            userDS.UpdateParameters.Add("modified", TypeCode.DateTime, DateTime.Now.ToString());
        }

        protected void userDS_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {

        }
        protected void deleting(object sender, SqlDataSourceCommandEventArgs e)
        {
            string s = userDS.DeleteCommand;
        }
        protected void updating(object sender, SqlDataSourceCommandEventArgs e)
        {
            string s = userDS.UpdateCommand;
        }

但是当我尝试过滤时:https://i.gyazo.com/16c57c6c4cba47897f08402c143ccaf1.gif

什么都没发生,没有回发,什么都没有。

你知道我是否遗漏了什么吗?

从给定的代码来看,您的 gridview 似乎在运行时使用参数化存储过程绑定。

但是,随着页面生命周期的循环,gridview 不会缓存实际数据,因此您需要在每次请求或往返服务器时都提供数据。

尝试以下这些替代方法来绑定您的 gridview 数据:

// use initialization method to bind data
protected void Page_Init(object sender, EventArgs e)  
{
     ASPxGridView1.DataSource = userDS;
     ASPxGridView1.DataBind();
}

// use load method to bind data
protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
         ASPxGridView1.DataBind();
     }
}

// or place it on data binding method...
protected void ASPxGridView1_DataBinding(object sender, EventArgs e) 
{
    ASPxGridView1.DataSource = userDS;
}

请注意,ASPXGridView 默认情况下不会将数据源信息存储在 ViewState 中,因为与普通 gridview 服务器控件相比,客户端中 ViewState 的性能问题,因此每个页面请求需要一个有效的数据源来绑定。

参考:https://www.devexpress.com/Support/Center/Question/Details/K18183