我有一個帶有一些linkbuttons的listview。目前,當你點擊一個按鈕時,它會觸發一個完整的回發,我想交換它以便它只是一個部分回傳。似乎它應該很簡單,但我似乎無法讓它工作,無論我做什麼。似乎我錯過了一些明顯的東西,但在這一點上,我很難過。帶Listview的異步回傳不起作用
列表視圖:
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" ChildrenAsTriggers="False" runat="server">
<ContentTemplate>
<section id="basketbox">
<hgroup class="mainhead">
<h2>Your basket</h2>
</hgroup>
<asp:ListView runat="server" ID="ListView1" OnItemCommand="ListView1_ItemCommand" DataSourceID="SqlDataSource1" DataKeyNames="PartCode">
<LayoutTemplate>
<div runat="server" id="itemPlaceholder" ></div>
</LayoutTemplate>
<ItemTemplate>
<h4><%#Eval("Name") %></h4>
<div class="quantitybox">
<div class="qtylbl">Qty</div>
<asp:LinkButton id="QtyDown" CommandArgument='<%#Databinder.Eval(Container.DataItem,"PartCode")%>' CssClass="qtybutton" CommandName="QtyDown" runat="server"><img src="/images/minus.png"></asp:LinkButton>
<div class="qtybox"><%#Eval("Quantity") %></div>
<asp:LinkButton id="QtyUp" CommandArgument='<%#Databinder.Eval(Container.DataItem,"PartCode")%>' CssClass="qtybutton" CommandName="QtyUp" runat="server"><img src="/images/plus.png"></asp:LinkButton>
</div>
</ItemTemplate>
</asp:ListView>
</section>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ListView1" />
</Triggers>
</asp:UpdatePanel>
事情我已經嘗試: -ChildrenAsTriggers設置爲true(沒有區別)
- 設置觸發器是LinkButton的標識(沒有找到控制)
- 設置頁面在頁面聲明中爲異步(沒有區別)
- 將ClientIDMode設置爲AutoID ListView控件(沒有區別)
- 登記一個LinkButton使用ScriptManager(以下背後功能代碼)
Private Sub RegisterPostBackControl()
For Each item As ListviewItem In ListView1.Items
Dim lnkFull As LinkButton = TryCast(item.FindControl("QtyUp"), LinkButton)
ScriptManager.GetCurrent(Me).RegisterAsyncPostBackControl(lnkFull)
Next
End Sub
還是那句話:沒有什麼區別
我也試過的大多數人在某種組合彼此之間;其中沒有任何差別。
我還應該嘗試什麼?
'在頁面聲明中設置頁面是異步的(沒有區別)'這根本不涉及到UpdatePanel,這是爲了異步/等待支持。 ' - 在listview控件上將ClientIDMode設置爲AutoID(沒有區別)'客戶端上的ID無關緊要。你有沒有嘗試在自己的UpdatePanel中包裝每個LinkButton?順便說一下,我建議你完全放棄UpdatePanel(因爲它很糟糕)(http://www.mikesmithdev.com/blog/asp-net-web-forms-the-drunken-lovechild-of-desktop-and-web /)),並使用AJAX和[Web API](http://www.asp.net/web-api)。 – mason 2015-03-13 15:54:21
@mason我知道UpdatePanels是惡魔的衍生物 - 不幸的是,我正在開發的項目有一個截止日期太近了,我無法離開並掌握Web API。我還沒有嘗試嵌套更新面板 - 我會給它一個去。 (並感謝解釋 - 他們都是我試過的「它可能有助於」的基礎)撕掉我的頭髮後 – FrustratedWDotNet 2015-03-13 16:11:01
您不*有*使用Web API,尤其是因爲它只適用於。 NET 4.5(但它是理想的)。我也不推薦ASMX,因爲該服務基本上已被棄用。如果我是你,我會做什麼,建立一些通用處理程序(.ashx)。讓他們在Web API中履行控制器的職責。你不會得到好的模型綁定的東西,你會手動需要從查詢字符串/表單值中提取值。但它應該都是直接和快速的實施。我知道使用UpdatePanel來「完成它」的誘惑,但是你必須支持這個代碼,對嗎? – mason 2015-03-13 16:45:04