0

私は C# 言語の初心者であり、既存の管理されていない .NET Web アプリケーションを拡張しようとして、かなり迷っています。

アプリケーションにはWeb User Controlボタンがあり、クリックすると、.ascx 内の次の JavaScript コードによって内部コンテンツが更新されます。

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

function endRequestHandler(sender, args) {
    var btnId = '<%= btn.ClientID %>'
    if (sender._postBackSettings.sourceElement.id == btnId) {
        // loads a popup with the new content
    }
}

これは完全に機能します。問題は、実質的に同じことを行う新しいものを追加しようとすると発生Web User Controlしますが、もちろん、別のボタンと別のコンテンツをロードすることによって発生します。endRequestHandler前と後ろの両方でコード構造を複製しましたが、2番目を実行できません。

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandlerStats);

function endRequestHandlerStats(sender, args) {
    alert("I'm here!");
    var btnStatsId = '<%= btnStats.ClientID %>'
    if (sender._postBackSettings.sourceElement.id == btnStatsId) {
        // loads another popup
    }
}

驚いたことに、alert最初のbtnがクリックされたときにポップしますが、2 番目の ではポップしませんbtnStats

がリクエストをトリガーしないために問題が発生していると思いますbtnStatsが、私が言ったように、私はこれが初めてで、理由がわかりません。そして、操作は適切に行われます。機能しないのは、そのスクリプトで行われることだけです。ヒントはありますか?

4

1 に答える 1

0

それがif条件の目的だと思います-それは、どのボタンがクリックされたかを確認することです。JavaScript のイベント モデルでは、複数のハンドラーをアタッチすることはできません (少なくとも余分な作業が必要です)。

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

function endRequestHandler(sender, args) {
    var btnId = '<%= btn.ClientID %>'
    var btnStatsId = '<%= btnStats.ClientID %>'
    if (sender._postBackSettings.sourceElement.id == btnId) {
        // loads a popup with the new content
    } 
    else if (sender._postBackSettings.sourceElement.id == btnStatsId) {
        // loads another popup
    }
}
于 2013-09-19T11:36:34.497 に答える