2009-05-01 56 views
4

問候,這裏是場景。UpdatePanel Full Postback

我與.aspx頁面中的UpdatePanel和這樣

<asp:UpdatePanel id="uPanelMain" runat="server"> 
    <ContentTemplate> 
     <uc:Calendar id="ucCalendar" runat="server" Visible="true" /> 
     <uc:Scoring id="ucScoring" runat="server" Visible="false" /> 
    </ContentTemplate> 

控制ucCalendar加載第一,它包含這樣

<asp:DataGrid CssClass="grid" ID="gridGames" runat="server" AutoGenerateColumns="False" HeaderStyle-CssClass="gridHeader" ItemStyle-CssClass="gridScoringRow" 
      GridLines="None" ItemStyle-BackColor="#EEEEEE" AlternatingItemStyle-BackColor="#F5F5F5" 
      OnEditCommand="doScoreGame" OnDeleteCommand="doEditGame" OnCancelCommand="printLineup" OnItemDataBound="gridDataBound"> 
    <Columns> 
     <asp:TemplateColumn > 
      <ItemTemplate> 
       <asp:CheckBox ID="chkDelete" runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:BoundColumn DataField="idGame" Visible="false" /> 
     <asp:BoundColumn DataField="isClose" Visible="false" /> 
     <asp:TemplateColumn HeaderText="Status"> 
      <ItemTemplate> 
       <asp:Image ID="imgStatus" runat="server" ImageUrl="~/img/icoX.png" alt="icoStatus" /> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn> 
      <ItemTemplate> 
       <asp:LinkButton ID="linkScore" runat="server" CommandName="Edit" Text="Score" /> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
    </Columns> 
</asp:DataGrid> 

網格所以,當我點擊「linkBut​​ton」,userControl的代碼隱藏在.aspx中調用一個公共方法,如下所示:

從用戶控件

protected void doScoreGame(object sender, DataGridCommandEventArgs e) 
    { 
     ((GM)this.Page).showScoring(null, null); 
    } 

從.aspx頁面中

public void showScoring(object sender, EventArgs e) 
{ 
    removeLastLoadedControl(); 
    ucScoring.Visible = true; 
} 

所以,來這裏的問題:

有兩個回發發生時,我改變ucScoring的可見屬性控制。

第一次回傳很好,它由updatePanel處理。

第二次回發是一個完整的回發,我真的不明白爲什麼會發生。

我真的迷失在這裏,請幫忙!

感謝

回答

0

我很好奇,什麼是removeLastLoadedControl()方法中的事情。

1

您正在手動觸發UpdatePanel不知道的事件。您需要將該事件與您的控件綁定並註冊:

ScriptManager.RegisterAsyncPostBack(ucScoring);