UpdatePanelのListViewにLinkButtonがあります。ボタン(まあ、それらのいずれか)で部分的なポストバックが発生するようにしたいのですが、ページ全体のポストバックが発生しています。
<asp:UpdatePanel ID="upOutcomes" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:ListView ID="lvTargets" runat="server" onitemdatabound="lvTargets_ItemDataBound">
<ItemTemplate>
<asp:LinkButton ID="lnkAddTarget" CssClass="lo" Text='<%# Eval("Title") + " <b>" + Eval("Level") + Eval("SubLevel") + "</b>" %>' runat="server"></asp:LinkButton>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
私はこれを追加することを提案したstackoverflowに関する別の投稿を見つけました:
protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) {
var lb = e.Item.FindControl("lnkAddTarget") as LinkButton;
tsm.RegisterAsyncPostBackControl(lb); // ToolkitScriptManager
}
違いはありません...
他にも同様の投稿がいくつかありますが、解決策が見つかりません!何か案は?
ASP.NET 4のClientIDMode設定を使用すると、ASP.NETがHTML要素のid属性を生成する方法を指定できます。
以前のバージョンのASP.NET(つまり、4より前)では、デフォルトの動作はClientIDModeのAutoID設定と同等でした。ただし、デフォルト設定はPredictableになりました。
スクリプトマネージャーが以前のバージョンの.NETでHTMLコントロールが生成されることを期待する方法のため、これにはAutoIdが必要です。
該当するページのページディレクティブにClientIDMode="AutoID"
を設定することで、この問題を解決しました。
<%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>
これは正常に機能しています。
次のように、該当するページのページディレクティブにClientIDMode = "AutoID"を設定することで、この問題を解決しました。<%@ Page Title = "" ClientIDMode = "AutoID" Language = "C#"%>
この問題を解決するには、該当するページのページディレクティブでClientIDMode = "AutoID"を次のように設定します:_<%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>
_。これにより、以前の問題であるASPリンクボタンが完全なポストバックを引き起こすListView。
ただし、これには、クライアントコード(Jquery、Javascript)のASPコントロールが、ブラウザーのソースコードに表示されるフルネームで参照される必要がある場合があります(FirefoxでFirebugを使用して取得します)たとえば、このJquery関数$("#ContentPlaceHolder1_btnCancelReferCustomer").click(function () { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; });
は次のように変更されました(セレクターのaspボタン名の変更に注意してください):$("#ctl00_ContentPlaceHolder1_btnCancelReferCustomer").click(function () { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; });
次のように、CommandName
、CommandArgument
属性およびOnCommand
イベントハンドラーをリンクボタンに追加してみてください。
<asp:LinkButton CommandName='test' CommandArgument='<%# Eval("Title") %>' ID="lnkAddTarget" runat="server" OnCommand="LinkButtonCommandEventHandler" />
または-ListView全体にOnItemCommand
ハンドラーを追加します。