文本框textchanged事件始终触发 [英] textbox textchanged event always firing

查看:80
本文介绍了文本框textchanged事件始终触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有几个文本框和一个Grid-view的表单.有一个名为"Inward Number"的文本框,其文本更改事件始终触发.当我要触发另一个控件的事件时,它仅触发内向号"文本框的文本更改事件.所有其他控件都会发生这种情况.有人可以帮忙吗?

I have a form with a few text-boxes and a Grid-view. There is this one text-box called "Inward Number", whose text-changed event fires all the time. When i want to fire another control's event, it simply fires the text-changed event of the Inward Number text-box. This happens with all of the other controls. Can someone please help?

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

我使用了正确的名称,但是仍然会发生此错误.

I have used the correct names, but still this error occurs.

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

新行只会在网格中创建新行.

new row just makes a new row in my grid.

private void NewRow(){int rowIndex = 0;

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++;
   }

推荐答案

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

A TextBox control must persist some values between posts to the server for this event to work correctly. Be sure that view state is enabled for this control.

尝试为TextBox启用ViewState.

Try enabling ViewState for TextBox.

这篇关于文本框textchanged事件始终触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆