对Textbox onblur事件执行数据库查询

我正在使用带有C#的asp.net 3.5。 当用户在txtProductID中输入ProductID时,我需要进行数据库查找。 我想做javascript是不可能的,因为这将是服务器端调用。 我在网页的page_load事件中写了这段代码:

protected void Page_Load(object sender, EventArgs e) { txtProductID.Attributes.Add("onblur", "LookupProduct()"); } protected void LookupProduct() { //Lookup Product information on onBlur event; } 

我收到一条错误消息:Microsoft JScript运行时错误:预期的对象如何解决此问题?

使用TextBox.TextChanged事件。

ASPX标记:

  

代码隐藏:

 protected void txtProductID_TextChanged(object sender, EventArgs e) { // do your database query here } 

onblur是一个客户端事件。 LookupProduct是一种服务器端方法。 你不能从另一个中引用一个 – 两者之间根本没有任何关联。

没有快速解决方法 – 你必须在客户端事件上触发回发(使用ClientScriptManager.GetPostBackEventReference )或使用像Microsoft ASP.NET Ajax这样的库实现Ajax回调。

或者,如果您不需要在每次模糊时触发此事件,并且仅在文本更改时 ,则可以简单地使用服务器端TextBox.OnChanged事件并将TextBox的AutoPostBack属性设置为true 。 确保你记得设置AutoPostBack ,否则这不会让你到任何地方。

这应该可行,如下所述: http : //www.codedigest.com/CodeDigest/80-Calling-a-Serverside-Method-from-JavaScript-in-ASP-Net-AJAX—PageMethods.aspx

这些是控件

   

这是Javascript

  

这是服务器sidewebmethod

 [WebMethod] public static bool LookupProduct() { return true; }