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 のみを使用したいと思います。

問題は、タグを削除すると、コントロール btnSearch が存在しなくなるため、GetPostBackEventReference 呼び出しでコンパイル エラーが発生することです。

CSS を使用して btnSearch のスタイルを設定し、それを display:none にすることはいつでもできますが、それは問題に対処するための汚い方法のように思えます。

コントロールイベントに結び付けられずにサーバー側のメソッドを呼び出す方法はありませんか? 私は 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 に答える