事件没有被解雇

时间:2012-03-23 10:23:06

标签: c# asp.net

我有一个表格,其中有一个电子邮件和许多其他文本框的文本框。 该电子邮件的功能与先前输入的电子邮件不匹配,但可以为空白。

我在文本框的文本更改事件中解雇了我的代码并且工作正常。 但是当我点击更新按钮而不将光标从文本框中移开时。 单击该按钮不起作用。只有textchange的textchanged事件才会发生。

请帮助我。

 string emailid = txtemail.Text;
var emailcnt2 = (from r in context.Customers
                                 where r.Email == Convert.ToString(emailid)
                                 select r).SingleOrDefault();

                if (emailcnt2 != null)
                {
                    lblemail.Text = "Email already exists for customer " + emailcnt2.FirstName + " " + emailcnt2.LastName + "";
                    //  emaildisplay.Attributes.Add("style", "display:block;");
                    txtemail.Focus();
                }

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要做的就是在按下按钮时触发textChanged事件。

我会将所有textChanged事件逻辑放入一个方法ValidateTextBoxes中,并在textbox textChanged事件和单击按钮单击事件中单独调用它。

如果我误解了你,请告诉我。

编辑: 我不明白手头的问题。 见评论。

答案 1 :(得分:0)

我查看了我遇到此问题的项目,而“hack”是将文本框放在UpdatePanel内,它似乎适用于大多数情况(我在按钮点击时没有测试火,但他们很少,实际上非常罕见)。

我无法准确说明它为何起作用,我没有一定的或有效的解释,但可能是因为UpdatePanel发出了自己的请求,而表单提交它只是另一个请求。

更进一步,我试图想一想这种行为的解释。看起来TextChanged事件在文本被更改时真的被触发了(搞笑,没有?)。我们希望这个事件在onblur时刻触发,如果是这样的话,即文本改变了,但是当点击其他按钮时,ASP .Net生成的javascript可能会检查文本是否被更改然后提交表单来触发这个事件。按钮点击现在丢失,因为表单无法提交两次。

现在,UpdatePanel带来的是它有责任触发TextChanged事件,因此按钮点击现在照常被激活。