如何在没有回发的情况下更新文本框onchange?

时间:2015-03-03 17:12:21

标签: c# asp.net

有没有办法在不使用回发的情况下更新文本框?我希望在用户在txtDFS字段中输入数据后,使用(100 - txtStocked)的值填充txtStocked字段。

以下代码有效,但它使用回发以便页面刷新。有没有办法在不刷新页面的情况下完成此操作?

<asp:TextBox ID="txtStocked" runat="server" Width="75px" AutoPostBack="true" OnTextChanged="txtStocked_TextChanged"></asp:TextBox>
<asp:TextBox ID="txtDFS" runat="server" Width="75px"></asp:TextBox>

protected void txtStocked_TextChanged(object sender, EventArgs e)
    {
        int stocked = Convert.ToInt16(txtStocked.Text);
        int dfs = (100 - stocked);
        txtDFS.Text = dfs.ToString();
        txtDFS.Text = txtStocked.Text;
    }

1 个答案:

答案 0 :(得分:1)

使用UpdatePanel解决了这个问题。这是更新的代码:

<asp:ScriptManager ID="SCManager" runat="server" />
<asp:UpdatePanel ID="SCPanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>

<asp:TextBox ID="txtStocked" runat="server" Width="75px" autopostback="true" OnTextChanged="Update_Text"></asp:TextBox>
<asp:TextBox ID="txtDFS" runat="server" Width="75px" ReadOnly="True"></asp:TextBox>

</ContentTemplate>
</asp:UpdatePanel>


protected void Update_Text(object sender, EventArgs e)
    {            
        int stocked = Convert.ToInt16(txtStocked.Text);
        int dfs = (100 - stocked);
        txtDFS.Text = dfs.ToString();            
        SCPanel.Update();
    }