PDA

View Full Version : [ASP .NET]


luxe
16-03-2010, 11:47
Ciao ragazzi....ho un problema che non riesco a risolvere, vi spiego...

Ho creato una pagina master con una tabella in cui nella colonna di sinistra ho un Link (button) mentre nella colonna destra un ContentPlaceHolder in cui dinamicamente dovrebbe caricare le pagine che richiamo dal Button (tramite PostBackUrl) del menu di sinistra. Il procedimento funziona il problema è che ricarica l'intera pagina e non solo il contenuto all'interno del ContentPlaceHolder (tipo fosse ajax). Nell'update panel (interno al ContentPlaceHolder) ho anche specificato il trigger di aggiornamento del pannello con l'evento click del button della colonna sinistra. In questo esempio cliccando si carica la pagina. calendar.aspx

In pratica vorrei che cliccando Button1 si modifica il contenuto del ContentPlaceHolder (caricando la pagina calendar.aspx) senza ricaricare tutta la pagina !

Ecco lo screen :

http://img188.imageshack.us/img188/3388/screenuts.jpg


<td class="style2"
style="background-color: #ECFFF1; text-align: center; "
valign="top">
<br />
<asp:Button ID="Button1" runat="server" Text="Button"
onclick="Button1_Click" PostBackUrl="~/calendar.aspx" />
</td>
<td class="style3">


<div id="box">

<ContentTemplate>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
</asp:UpdatePanel>
</asp:ContentPlaceHolder>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>

</div>
</td>


Spero che qualcuno mi puo' aiutare !!!

Kralizek
16-03-2010, 12:42
1) il markup é malformato. ContentTemplate é una proprietá dell'UpdatePanel, non viceversa (ma credo che hai smanettato con il copia&incolla, altrimenti VS ti mandava bestemmie e benedizioni)

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
[...]
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>


2) il ContentPlaceHolder non puó essere usato in un controllo Ajax perché é un "meta-controllo" visto che viene usato dal compilatore quando unisce Master Page e Content Page. Forse vuoi usare il PlaceHolder.

Se devi cambiare la MasterPage a runtime, devi lavorare nell'evento Page.PreInit. Dopo é troppo tardi.

luxe
16-03-2010, 13:01
grazie della risposta !
.....si hai ragione, stavo copiando e incollando a pezzi quindi .... ho chiaramente incollato male, in effetti è cosi:



<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click">
</asp:AsyncPostBackTrigger>
</Triggers>
</asp:UpdatePanel>
</asp:ContentPlaceHolder>




quindi cosa mi consigli di fare in pratica !