繁体   English   中英

动态文本框事件TextChanged没有触发

[英]Dynamic Textbox event TextChanged is not firing

我有一个动态文本框事件的问题。 我得到了另一个带有其textchanged事件的动态文本框,其他的都很好用,但是这个永远都不会进入该事件,属性AutoPostBack = true,EnabledViewState也是如此,EnabledViewTheming也是如此,它进入了UpdatePanel,并创建了一个动态触发器。

这是我的代码:

TextBox DescUnit = new TextBox();
DescUnit.ID = "DescUnit_txt" + (No).ToString();
DescUnit.Text = "0.0";
DescUnit.TextChanged += new EventHandler(DescUnit_TextChanged);
DescUnit.AutoPostBack = true;
DescUnit.EnableViewState = true;
DescUnit.EnableTheming = true;
Trgr = new PostBackTrigger();
Trgr.ControlID = DescUnit.ID;
UpdatePanel1.Triggers.Add(Trgr);
Table.Rows[i - 1].Cells[3].Controls.Add(DescUnit);

这是我活动的代码

protected void DescUnit_TextChanged(object sender, EventArgs e)
{
    Descuento_Row.Visible = true;
    int i = 1;
    foreach (HtmlTableRow Row in Tab.Rows)
    {
        if (Row.ID != null && String.Compare(Row.ID.Substring(0, 6), "TRDet_") == 0)
        {
            Detalle = (HtmlTable)(Row.Cells[0].Controls[0]);
            if (sender.Equals(Detalle.Rows[1].Cells[3].Controls[0]))
            {
                TextBox Cantidad = new TextBox();
                Clonar(Tab.Rows[i].Cells[1].Controls[0], Cantidad);
                TextBox Precio = new TextBox();
                Clonar(Tab.Rows[i].Cells[4].Controls[0], Precio);
                TextBox DescUnit = new TextBox();
                Clonar(Detalle.Rows[1].Cells[3].Controls[0], DescUnit);
                TextBox ImpDesc = new TextBox();
                Clonar(Detalle.Rows[2].Cells[4].Controls[0], ImpDesc);

                ImpDesc_txt.Text = ((Convert.ToDouble(ImpDesc_txt.Text) - Convert.ToDouble(ImpDesc.Text)) + (Convert.ToDouble((Convert.ToDouble(DescUnit.Text) / 100)) * (Convert.ToDouble(Precio.Text) * Convert.ToInt32(Cantidad.Text)))).ToString();
                ImpDesc.Text = (Convert.ToDouble((Convert.ToDouble(DescUnit.Text) / 100)) * (Convert.ToDouble(Precio.Text) * Convert.ToInt32(Cantidad.Text))).ToString();

                Detalle.Rows[2].Cells[4].Controls.Clear();
                Detalle.Rows[2].Cells[4].Controls.Add(ImpDesc);
            }

            i = i + 2;
        }
    }
}

但是永远不要进入。 谁能帮我?

每当我们在ASP.Net中创建控件时,都可以在窗体加载时或在窗体加载后创建控件。 但是如果您想要控件的事件。 您应该在onInit方法中对其进行初始化。 然后它将正常工作。 如果假设我要创建动态文本框及其事件。 并希望将其添加到面板中

请参考以下代码。

protected override void OnInit(EventArgs e)
        {
            TextBox t = new TextBox();
            t.ID = "t01";
            t.TextChanged += t_TextChanged;
            t.AutoPostBack = true;
            Panel1.Controls.Add(t);
        }

      protected  void t_TextChanged(object sender, EventArgs e)
        {

        }

另外,请确保控件的ID正确。 必须整数,下划线和字母数字。 例如t001,t_1等

但是不应该空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM