2012-08-14 68 views
1

我正在将我的搜索功能移到jquery对话框中。从jQuery对话框调用服务器端方法

我原本

使用下面的搜索框位于由姓

搜寻:  搜索

我已经添加了以下javascript:

 var dlgSearch = $("#SearchDialog").dialog({ 
     autoOpen: false, 
     zIndex: 9999, 
     bgiframe: true, 
     resizable: false, 
       width: 450, 
     modal: true, 
     overlay: { 
      backgroundColor: '#000', 
      opacity: 0.5 
     }, 
     buttons: { 
     'Search': 
     function() { 
      <%= Page.ClientScript.GetPostBackEventReference(btnSearch, String.Empty) %>; 
     }, 

      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 

    dlgSearch.parent().appendTo($("form:first")); 

这工作正常。但是现在我将2个搜索按钮呈现给浏览器。原始的一个呈现与标记,并与jQuery对话框实例化呈现的按钮。我想摆脱使用服务器端标记呈现的一个,只使用jQuery的一个。

问题是,如果我删除标记,GetPostBackEventReference调用时会出现编译错误,因为控件btnSearch不再存在。

我可以一直使用CSS来设计btnSearch,并使其显示:无,但这似乎是解决问题的肮脏方法。

没有一种方法来调用服务器端方法,而不是将它绑定到控件事件? 请注意,我不想要ajax回调方法,我需要实际上有一个回发。

回答

1

在客户端使用此:__doPostBack("SearchDialog", "");,这对服务器:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack && Request.Form["__EVENTTARGET"] == "SearchDialog") 
    { 
     //your code here 
    } 
} 
相关问题