【问题标题】:How to refresh a GridView/LINQ data source from textbox onchange event如何从文本框 onchange 事件刷新 GridView/LINQ 数据源
【发布时间】:2009-07-28 16:17:36
【问题描述】:

我一直无法让我的文本框从 onchange 事件中刷新 GridView。

GridView 链接到 LINQ 数据源,并且 LINQ 数据源具有从文本框获取的 Where 参数 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>

到目前为止,我还没有后端代码。由于我将文本框默认设置为 12,因此 GridView 加载了 UserId 12 的记录,但现在如果我更改文本框中的数字,我希望 GridView 重新加载。有什么想法吗?

【问题讨论】:

    标签: asp.net linq-to-sql data-binding gridview onchange


    【解决方案1】:

    首先将 AutoPostBack 属性添加到您的 TextBox:

    <asp:TextBox ID="textbox_UserId" Text="12" runat="server" 
        AutoPostBack="true" ontextchanged="textbox_UserId_TextChanged"/>
    

    然后,把它放在你的代码后面:

    protected void textbox_UserId_TextChanged(object sender, EventArgs e)
    {
        GridView1.DataBind();
    }
    

    【讨论】:

      【解决方案2】:

      只要打电话

      GridView1.DataBind();
      

      输入新值后。

      【讨论】:

        【解决方案3】:
        OleDbCommand cmd = new OleDbCommand("update ESInfo1 set OrdTime='" + td.ToString() + "', SSO2='" + DropSupportOfficer.Text + "', Orderby='" + Txthst.Text + "' where Sln=" + Txtsln.Text + "", con);
        cmd.ExecuteNonQuery();
        GridView1.DataBind();
        cmd.Dispose()
        

        但gridview中没有行

        【讨论】:

        • 我不清楚这是如何解决问题的(如果有的话),您介意进一步解释您的答案吗?
        【解决方案4】:

        创建数据表方法并返回

        GridView1.DataSource = 方法(); GridView1.DataBind();

        【讨论】:

          猜你喜欢
          • 2020-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多