如何从textbox onchange事件刷新GridView/LINQ数据源

Mat*_*att 1 asp.net data-binding gridview onchange linq-to-sql

我一直遇到麻烦让我的文本框从onchange事件中刷新GridView.

GridView链接到LINQ数据源,LINQ数据源有一个Where Parameter UserId,它从文本框中获取......这是代码:

    <asp:Label ID="label_UserId" runat="server" Text="Search by User Id: "></asp:Label>
    <asp:TextBox ID="textbox_UserId" Text="12" runat="server" 
        ontextchanged="textbox_UserId_TextChanged"></asp:TextBox>

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="UserID" DataSourceID="LINQUserSource" 
        EmptyDataText="There are no data records to display.">
        <Columns>
            <asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True" 
                SortExpression="UserID" />
            <asp:BoundField DataField="Username" HeaderText="Username" 
                SortExpression="Username" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
                SortExpression="FirstName" />
            <asp:BoundField DataField="LastName" HeaderText="LastName" 
                SortExpression="LastName" />
            <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
        </Columns>
    </asp:GridView>

    <asp:LinqDataSource ID="LINQUserSource" runat="server" 
        ContextTypeName="DotNetNuke.Modules.Report.UsersDataContext" 
        Select="new (UserID, Username, FirstName, LastName, Email)" Where="UserId = @UserId"
        TableName="Users">
        <WhereParameters>
            <asp:ControlParameter
                Name="UserId"
                DefaultValue="0"
                ControlID="textbox_UserId"
                Type="Int32" /> 
        </WhereParameters>
    </asp:LinqDataSource>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我没有任何后端代码.由于默认情况下我将文本框设置为12,因此GridView会加载UserId 12的记录,但现在我希望在更改文本框中的数字时重新加载GridView.有任何想法吗?

drs*_*222 5

首先将AutoPostBack属性添加到TextBox:

<asp:TextBox ID="textbox_UserId" Text="12" runat="server" 
    AutoPostBack="true" ontextchanged="textbox_UserId_TextChanged"/>
Run Code Online (Sandbox Code Playgroud)

然后,将其放在您的代码中:

protected void textbox_UserId_TextChanged(object sender, EventArgs e)
{
    GridView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud)