문제

OnChange 이벤트에서 GridView를 새로 고치기 위해 TextBox를 가져 오는 데 어려움을 겪고 있습니다.

GridView는 LINQ 데이터 소스에 연결되어 있으며 LINQ 데이터 소스에는 텍스트 상자에서 얻은 매개 변수 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가 다시로드되기를 원합니다. 어떤 아이디어?

도움이 되었습니까?

해결책

먼저 텍스트 상자에 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();
}

다른 팁

그냥 전화하십시오

GridView1.DataBind();

새 가치를 입력 한 후.

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

그러나 그리드 뷰에는 줄이 없습니다

데이터 가능한 메소드를 작성하고 반환하십시오

gridview1.datasource = method (); gridview1.databind ();

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top