ASP.NET:事件的多个元素不起作用

时间:2015-03-10 10:59:45

标签: c# asp.net events textbox

所以,我的问题是我有很多动态地从数据库创建的文本框(x字段代表两个文本框),我想为所有人处理相同的事件Textchanged。

但是当我将字符放在文本框中时,会为具有此事件的所有文本框启动该事件。

以下是我如何声明我的文本框:

            TextBox x = new TextBox();
            x.ID = "txtX" + reader.GetInt32(0);
            x.Text = "x";
            x.Width = Unit.Pixel(50);
            x.AutoPostBack = true;
            x.TextChanged += txtBoxTextChanged;

            TextBox y = new TextBox();
            y.ID = "txtY" + reader.GetInt32(0);
            y.Text = "y";
            y.Width = Unit.Pixel(50);
            y.AutoPostBack = true;
            y.TextChanged += new EventHandler(txtBoxTextChanged);

这是我的事件txtBox:

protected void txtBoxTextChanged(object sender, EventArgs e)
        {
            TextBox txt = (sender as TextBox);

            Response.Write("<script>alert(\""+ txt.ID +" a pour valeur : "+ txt.Text +"\");</script>");
        }

那么,我怎样才能找到触发事件的控件?

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

事件调用中的第一个参数是发件人。所以你有控件导致事件。

答案 1 :(得分:0)

可以为每个文本框添加名称属性,例如

 TextBox x = new TextBox();
 x.Name = "t1";  

并且在偶数处理程序内部,您可以检查该名称,这将允许您识别触发事件的文本框。

TextBox txt = (sender as TextBox);
var name = txt.Name;

答案 2 :(得分:0)

我发现了我的错误。

当我创建文本框时,我放了一个文字&#39; X&#39;或者&#39; Y&#39;。当事件触发时,所有文本框都有文本,这就是为什么它第一次没有工作,但之后,它可以工作。

感谢大家的帮助和建议。