2

ユーザーがテーブルの行をクリックすると、jQueryを使用してセルの1つにあるリンクを選択します。私の検索によると、これはかなり標準的なことです。

$(document).ready(function () {
    $('table.timecarddetail tr').click(function () {
            var href = $(this).find("a").attr("href");
            if (href) {
                window.location = href;
            }
        });
    });  

注:table.timecarddetailはテーブルクラスです。

埋め込まれたリンクは本質的にajax呼び出しであるため、完全なポストバックは行われず、ページは更新されません。私の問題は、イベントが1回発生するが、それ以降のクリックは無視されることです。

技術的な詳細:私はVS2010を使用しており、各リンクはレコードIDを渡す同じプロシージャを指しています。モーダルポップアップエクステンダーパネルには、そのレコードのデータが入力され、panel.showで表示されます。

私はここで何が間違っているのですか?

4

1 に答える 1

0

過去に JQueryUI を実装しているときに同じ問題が発生しました。スクリプト マネージャーは、ajax ポストバックの後に JavaScript を破棄します。これを関数でラップし、ajax 呼び出しの最初と最後にコールバックすることで、これを回避できます。

Jクエリ

$(document).ready(function () { 
    setRows();
});   

function setRows() {
$('table.timecarddetail tr').click(function () { 
        var href = $(this).find("a").attr("href"); 
        if (href) { 
            window.location = href; 
        } 
    }); 
}

次に、ページでこれをスクリプトマネージャーの後に配置します

<asp:ScriptManager runat="server">
</asp:ScriptManager>
<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(BeginRequestHandler);
    prm.add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args) {
        setRows();
    }
    function EndRequestHandler(sender, args) {
        setRows();
    }
</script>

お役に立てれば。

于 2012-06-29T09:58:04.590 に答える