2011-04-13 72 views
27

我在UpdatePanel的ListView中有一個LinkBut​​ton。我希望按鈕(以及其中的任何一個)引起部分回發,但它們會導致整頁回發。在UpdatePanel的ListView中的LinkBut​​ton導致完整的回發

<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> 

我發現了另一個計算器後,其建議增加此:

protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) { 
    var lb = e.Item.FindControl("lnkAddTarget") as LinkButton; 
    tsm.RegisterAsyncPostBackControl(lb); // ToolkitScriptManager 
} 

這還沒有做出區別...

還有一些其他類似的帖子太多,但我找不到解決方案!有任何想法嗎?

+0

剛試過了,謝謝。雖然沒有運氣。 :(我需要它有條件地更新 – James 2011-04-13 17:02:40

+0

嘗試使用將更新面板的控件填充集合,即使控件位於面板內 – 2011-04-13 17:20:58

+0

我該如何做?'lnkAddTarget'在ListView外部是不可見的。謝謝。 – James 2011-04-13 17:26:59

回答

38

ASP.NET 4中的ClientIDMode設置允許您指定ASP.NET如何爲HTML元素生成id屬性。

在以前的ASP.NET版本(即pre 4)中,默認行爲等同於ClientIDMode的AutoID設置。但是,現在默認設置爲可預測

Read Microsoft Article

的AutoID爲此需要的,因爲腳本經理希望在.NET之前的版本要生成的HTML控件的方式。

+1

謝謝。這讓我瘋狂了半天。據我所知,我必須在鏈接按鈕上添加一個ID,並在頁面指令中添加AutoID。 – Larry 2011-05-27 08:11:23

+1

半天?我一直在爲此工作了一個多星期..我確信這是我的UpdatePanel或其他一些古怪的控制我正在使用。原來,這只是我的linkbutton .. gaah ... – Rob 2011-12-12 19:56:16

+1

謝謝你,我的好人。我從一個DataList切換到一個ListView,並不能找出爲什麼我的UpdatePanel突然停止工作 – Dogoku 2012-08-24 07:26:37

0

嘗試增加CommandNameCommandArgument屬性和OnCommand事件處理程序到您的LinkBut​​ton這樣的:

<asp:LinkButton CommandName='test' CommandArgument='<%# Eval("Title") %>' ID="lnkAddTarget" runat="server" OnCommand="LinkButtonCommandEventHandler" /> 

或者 - 添加OnItemCommand處理整個的ListView。

+0

感謝您的想法,但這並沒有什麼區別。 – James 2011-04-13 21:19:06

0

我解決了這個問題,通過在適用頁面的頁面指令上設置ClientIDMode =「AutoID」,例如:<%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>,從而解決了我之前在ListView中導致完全回發的ASP鏈接按鈕的問題。但是,這可能要求客戶端代碼(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; });

0

我通過設置解決了這個問題:的ClientIDMode =「自動識別」關於適用頁的頁面指令像這樣:<%@ Page Title =「」ClientIDMode =「AutoID」Language =「C#」%>

相關問題