2009-05-01 5 views
4

Grüße, hier ist das Szenario. SoUpdatePanel Full Postback

ich habe und ASPX-Seite mit und Update wie diese

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

Die Steuer ucCalendar zuerst geladen, und es enthält ein Raster wie diese

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

wenn ich klicken Der "linkButton", der Codebehind des Benutzersteuerelements ruft eine öffentliche Methode in dem ASPX wie folgt auf:

Von dem Usercontrol

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

Von der ASPX-Seite

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

So, hier kommt das Problem:

Es gibt zwei Postbacks stattfinden, wenn ich das sichtbare Attribut des ucScoring ändern Steuerung.

Das erste Postback ist in Ordnung, es wird von UpdatePanel behandelt.

Der zweite Postback ist ein voller Postback, und ich verstehe wirklich nicht, warum es passiert.

Ich bin wirklich hier verloren, bitte helfen!

Dank

Mat

Antwort

0

Ich bin neugierig, was innerhalb des removeLastLoadedControl() -Methode vor sich geht.

1

Sie feuern ein Ereignis manuell, von dem das UpdatePanel nichts weiß. Sie müssen dieses Ereignis mit Ihrem Steuerelement verknüpfen und es registrieren:

ScriptManager.RegisterAsyncPostBack(ucScoring);