2011-04-15 49 views
1

我想,這樣還不如多HTML具有通過AJAX的UpdatePanel每次調用被重發,以加快我的中繼器。UpdatePanel的一箇中繼器內 - 更新中的所有行

因此,這裏是我有什麼(一個非常簡化的版本):

<asp:Repeater ID="rptContactSteps" runat="server"> 
    <ItemTemplate> 

      <p>Script:<br /><%#mobjSDIT.FormatText(Eval("script"))%></p> 
      <p>Notes:<br /><%#mobjSDIT.FormatText(Eval("notes"))%></p> 

      <asp:UpdatePanel ID="upStep" runat="server" UpdateMode="Conditional"> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="rptContactSteps" EventName="ItemCommand" /> 
       </Triggers> 
       <ContentTemplate> 

        <p>Contact/Step Notes:<br /><%#mobjSDIT.FormatText(Eval("contact_step_notes"))%></p> 

        <asp:ImageButton ID="btnSaveAndCompleteLastStep" runat="server" ImageUrl="~/images/content/buttons/save-and-complete-button.png" CommandArgument='<%#Eval("step_contact_tie_id")%>' /> 

       </ContentTemplate> 
      </asp:UpdatePanel> 

    </ItemTemplate> 
</asp:Repeater> 

所以,當我點擊「btnSaveAndCompleteLastStep」我希望所有的UpdatePanel中的「rptContactSteps」進行更新。在ItemTemplate中使用UpdatePanel應該有助於防止重新加載填充Eval(「腳本」)的HTML /文本Eval(「註釋」),因爲這些變量的值可能非常大並且通過3G連接這可能是非常昂貴的(在時間&錢)。

我雖然通過增加異步觸發它會工作,我以前使用過這種類型的觸發器,但直放站內部時不會。目前,UpdatePanels根本就沒有得到更新,除了按鈕被按下的那個。

任何想法的人?

+0

你爲什麼不嘗試做的ImageButton的默認點擊事件,複製 - 粘貼ItemCommand代碼,並在AsyncPostBackTrigger的ImageButton的「點擊」更改事件名稱。這對我有用。 – 2011-04-15 17:52:09

+1

更新面板和Ajax不屬於同一個句子。我建議你看看這篇文章:http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/作者解釋說,他看到使用Ajax提高了4,000%,而不是更新面板。 – 2011-04-15 20:55:19

+0

尼克,我明白'寫'我自己的AJAX會更快,因爲我經常這樣做,但對於快速開發,我發現UpdatePanel非常方便。 – Darthtong 2011-04-18 08:56:18

回答

0

他們沒有得到更新,除非因爲更新模式設置爲條件被調用的一個,並且在默認情況下ChildrenAsTriggers設置爲true。因此,如果您希望在更改其中一個更新時全部更新它們,則需要在每個中繼器項中找到每個更新面板,並在更新面板上調用.Update(),或者更改更新模式到「始終」,或者只是將您的中繼器包裝在更新面板中,而不是隻包裝物品。

這有道理嗎?如果沒有,我可以擴大。

0

這是因爲從一個UpdatePanel內回傳默認情況下不會在它之外任何更新行爲聽起來不錯給我。你可以嘗試

一種方法是在你的btnSaveAndCompleteLastStep點擊,找到每個UpdatePanel中的中繼器項目和調用Update()就可以了。

+0

乾杯gbs,就是我一直在尋找的! – Darthtong 2011-04-18 09:46:58