ASP.NET : 一个事件的多个元素不起作用
ASP.NET : Multiple elements for an event doesn't work
所以,我的问题是我有很多从数据库动态创建的文本框(x 字段代表两个文本框),我想为所有文本处理相同的事件。
但是当我将字符放入文本框时,该事件会为所有具有此事件的文本框启动。
这是我声明文本框的方式:
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>");
}
那么,我怎样才能找到触发事件的控件呢?
谢谢你的帮助
事件调用中的第一个参数是发送者。因此,您可以控制导致事件的发生。
或许您可以为每个文本框添加名称属性,例如
TextBox x = new TextBox();
x.Name = "t1";
在偶数处理程序中,您可以检查该名称,这将允许您识别触发事件的文本框。
TextBox txt = (sender as TextBox);
var name = txt.Name;
我发现了我的错误。
当我创建我的文本框时,我放了一个文本 'X' 或 'Y'。当事件触发时,所有的文本框都有一个文本,这就是为什么它第一次不起作用,但之后,它起作用了。
感谢大家的帮助和建议。
所以,我的问题是我有很多从数据库动态创建的文本框(x 字段代表两个文本框),我想为所有文本处理相同的事件。
但是当我将字符放入文本框时,该事件会为所有具有此事件的文本框启动。
这是我声明文本框的方式:
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>");
}
那么,我怎样才能找到触发事件的控件呢?
谢谢你的帮助
事件调用中的第一个参数是发送者。因此,您可以控制导致事件的发生。
或许您可以为每个文本框添加名称属性,例如
TextBox x = new TextBox();
x.Name = "t1";
在偶数处理程序中,您可以检查该名称,这将允许您识别触发事件的文本框。
TextBox txt = (sender as TextBox);
var name = txt.Name;
我发现了我的错误。
当我创建我的文本框时,我放了一个文本 'X' 或 'Y'。当事件触发时,所有的文本框都有一个文本,这就是为什么它第一次不起作用,但之后,它起作用了。
感谢大家的帮助和建议。