【问题标题】:textbox textchanged event always firing文本框 textchanged 事件总是触发
【发布时间】:2011-06-02 13:19:12
【问题描述】:

我有一个带有几个文本框和一个网格视图的表单。有一个名为“Inward Number”的文本框,它的文本更改事件一直触发。当我想触发另一个控件的事件时,它只是触发 Inward Number 文本框的文本更改事件。所有其他控件都会发生这种情况。有人可以帮忙吗?

protected void txtInward_No_TextChanged(object sender, EventArgs e)
{
   a = 'A';
   NewRow();
}

我使用了正确的名称,但仍然出现此错误。

<asp:TextBox ID="txtInward_No" runat="server" Width="220px" CssClass="txtbox" 
                    EnableViewState="False" 
                    AutoPostBack="True" ontextchanged="txtInward_No_TextChanged">
</asp:TextBox>

新行只是在我的网格中创建一个新行。

private void NewRow() { int rowIndex = 0;

        if (ViewState["CurrentTable"] != null)
        {
            DataTable dtnew = new DataTable();
            dtnew = (DataTable)ViewState["CurrentTable"];
            DataRow drr = null;
            if (dtnew.Rows.Count > 0)
            {
                for (int i = 1; i <= dtnew.Rows.Count; i++)
                {
                    TextBox box1 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox1");
                    TextBox box2 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox2");
                    TextBox box3 = (TextBox)GridView1.Rows[rowIndex].Cells[4].FindControl("TextBox3");
                    TextBox box4 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox4");
                    TextBox box5 = (TextBox)GridView1.Rows[rowIndex].Cells[6].FindControl("TextBox5");

                    drr = dtnew.NewRow();
                    if (txtInward_No.Text =="1")
                    {
                        drr["InwardNumber"] = txtInward_No.Text + b.ToString();                           
                    }
                    else 
                    {
                        drr["InwardNumber"] = txtInward_No.Text + a.ToString();
                    }
                    drr["Bags"] = box1.Text;
                    drr["GrossWt"] = box2.Text;
                    drr["TareWt"] = box3.Text;
                    drr["NetWt"] = box4.Text;
                    drr["DCBillWt"] = box5.Text;

                    rowIndex++;                       
                }
                dtnew.Rows.Add(drr);
                ViewState["CurrentTable"] = dtnew;
                GridView1.DataSource = dtnew;
                GridView1.DataBind();                    
            }
        }
        PrevData();
        b++;
        a++;
   }

【问题讨论】:

  • 你能贴出你的asp.net页面的标记和事件处理程序代码吗?
  • 我们无法读懂你的想法。放一些代码..

标签: asp.net visual-studio-2008


【解决方案1】:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.ontextchanged.aspx

TextBox 控件必须在发送到服务器的帖子之间保留一些值,才能使此事件正常工作。确保为此控件启用了视图状态。

尝试为 TextBox 启用 ViewState。

【讨论】:

    【解决方案2】:

    我认为可能发生的情况是 ASP.NET 依赖 ViewState 来确定 TextBox 的值是否已更改。但是您已在此控件上禁用了 ViewState。我不确定为什么它不能改用 ControlState,但您可以尝试为此 TextBox 启用 ViewState,看看是否有效果。

    MSDN page on the OnTextChanged event 提到了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多