2009-07-28 66 views
1

我一直有麻煩讓我的文本框從onchange事件刷新GridView。如何從文本框onchange事件刷新GridView/LINQ數據源

GridView控件被鏈接到一個LINQ數據源和LINQ數據源有一個,將參數用戶ID,它從文本框中獲取...下面的代碼:

<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重新加載。有任何想法嗎?

回答

5

首先將AutoPostBack屬性添加到您的文本框:

<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(); 

你進入新的價值之後。

0
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的沒有行

+0

目前還不清楚這是如何解決問題的(如果有的話),你會介意進一步解釋你的答案嗎? – RobV 2012-10-26 19:09:57

-1

創建一個數據表的方法並返回

GridView1.DataSource = method(); GridView1.DataBind();