1

我正在将我的搜索功能移动到一个 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 回调方法,我实际上需要回发。

4

1 回答 1

1

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

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack && Request.Form["__EVENTTARGET"] == "SearchDialog")
    {
         //your code here
    }
}
于 2012-08-14T16:03:26.573 回答