текстовое поле текстовое событие всегда срабатывает - PullRequest
1 голос
/ 02 июня 2011

У меня есть форма с несколькими текстовыми полями и Grid-view.Это одно текстовое поле под названием «Внутренний номер», чье событие с измененным текстом запускается все время.Когда я хочу запустить событие другого элемента управления, он просто запускает событие с измененным текстом в текстовом поле «Внутренний номер».Это происходит со всеми другими элементами управления.Может кто-нибудь помочь, пожалуйста?

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

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

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

Элемент управления TextBox должен сохранять некоторые значения между публикациями на сервере, чтобы это событие работало правильно.Убедитесь, что для этого элемента управления включено состояние просмотра.

Попробуйте включить ViewState for TextBox.

1 голос
/ 02 июня 2011

Я думаю, что, вероятно, происходит то, что ASP.NET полагается на ViewState, чтобы решить, изменилось ли значение TextBox. Но вы отключили ViewState для этого элемента управления. Я не уверен, почему он не может использовать ControlState вместо этого, но вы можете попробовать включить ViewState для этого TextBox и посмотреть, имеет ли это эффект.

Страница MSDN в событии OnTextChanged упоминает об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...