2012-03-23 159 views
2

我有一个表单,其中有一个电子邮件和许多其他文本框的文本框。 电子邮件具有与先前输入的电子邮件不匹配的功能,但它可能为空。事件没有被解雇

我在文本框的文本更改事件中解雇了我的代码,它工作正常。 但是,当我点击更新按钮,而不把我的光标离开文本框。 按钮的点击不起作用。只有textchanged textbox事件触发没有其他事情发生。

请帮助我一样。

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

请提供代码演示了此问题 – 2012-03-23 10:24:29

+0

@AndrasZoltan我写的文字改变事件的代码 – Abhishek 2012-03-23 10:27:44

+0

按钮点击亘古不火....只有文字变化达到杉 – Abhishek 2012-03-23 10:28:08

回答

0

我看了一下我有这个问题的项目,“黑客”是把文本框放在UpdatePanel里面,它似乎适用于大多数情况下(当点击按钮没有触发时我进行了测试,但是他们很少,实际上非常罕见)。

我不能确切地说明它的工作原理,我没有一个确定的或有效的解释,但可能是因为UpdatePanel发出自己的请求,而表单提交它只是另一个请求。

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

现在,UpdatePanel带来的是它有责任触发TextChanged事件,因此按钮点击现在像平常一样被触发。

+1

不寻常但正确....感谢 – Abhishek 2012-03-23 12:28:42

1

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

我会把所有的textChanged事件逻辑放入方法ValidateTextBoxes中,并在文本框textChanged事件和按钮单击事件中分别调用它。

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

编辑: 我不明白这个问题。 查看评论。

+0

我希望textchange和按钮在同一时刻开火........当我按下按钮时......只有文本更改触发,而不是按钮点击 – Abhishek 2012-03-23 10:31:39

+0

将您的按钮点击事件注册为OnClick方法,并带有适当的符号然后在那里调用ValidateTextBoxes并添加按钮单击逻辑。 – SimpleVar 2012-03-23 10:35:05

+0

听起来好像您的按钮没有事件监听器,或者您使用textChanged方法监听他的单击事件。双击按钮听它的单击事件,并为其为您创建的方法填充逻辑,称为button1_onClick。 – SimpleVar 2012-03-23 10:36:34