Repeater e dettaglio in ajax

lunedì 19 maggio 2008 - 22.44

squilibrio Profilo | Expert

Ho 3 repeater in una pagina

<asp:Repeater ID="rptGiorno1" runat="server" OnItemDataBound="rptGiorno1_ItemDataBound">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>
<div align="center"><asp:Label id="lblRpt1Titolo" runat="server" CssClass="TextBold10"> </asp:Label></div>
<div align="center"><asp:Label id="lblRpt1Giorno" runat="server" CssClass="Text10"> </asp:Label></div>
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Image ID="imgTipo" runat="server" />
[<asp:Label id="Label2" runat="server" CssClass="Text10" Text='<%# DataBinder.Eval(Container.DataItem, "DescrizioneAttivitaTipo")%>'> </asp:Label>]
<br /><br />
<asp:Label id="Label1" runat="server" CssClass="Text10"
Text='<%# DataBinder.Eval(Container.DataItem, "Data")%>'>
</asp:Label>
<br /><br />
<asp:Label id="Label4" runat="server" CssClass="Text10"
Text='<%# DataBinder.Eval(Container.DataItem, "Anagrafica")%>'>
</asp:Label>
<br /><br />
<asp:Label id="Label3" runat="server" CssClass="Text10"
Text='<%# DataBinder.Eval(Container.DataItem, "Descrizione")%>'>
</asp:Label>
</td>
</tr>
<tr>
<td>
<hr />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>



<asp:Repeater ID="rptGiorno2" runat="server" OnItemDataBound="rptGiorno2_ItemDataBound">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>
<div align="center"><asp:Label id="lblRpt2Titolo" runat="server" CssClass="TextBold10"> </asp:Label></div>
<div align="center"><asp:Label id="lblRpt2Giorno" runat="server" CssClass="Text10"> </asp:Label></div>
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
[<asp:Label id="Label2" runat="server" CssClass="Text10" Text='<%# DataBinder.Eval(Container.DataItem, "DescrizioneAttivitaTipo")%>'> </asp:Label>]
<br /><br />
<asp:Label id="Label1" runat="server" CssClass="Text10"
Text='<%# DataBinder.Eval(Container.DataItem, "Data")%>'>
</asp:Label>
<br /><br />
<asp:Label id="Label4" runat="server" CssClass="Text10"
Text='<%# DataBinder.Eval(Container.DataItem, "Anagrafica")%>'>
</asp:Label>
<br /><br />
<asp:Label id="Label3" runat="server" CssClass="Text10"
Text='<%# DataBinder.Eval(Container.DataItem, "Descrizione")%>'>
</asp:Label>
</td>
</tr>
<tr>
<td>
<hr />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>



quando clicco su un elemento di ogni riga dei repeater... posso aggiungere qualunque oggetto ... vorrei visualizzare il dettaglio in questa tabella

(ho già guardato parecchi esempi ajax ma non capisco come gestire questa situazione con i repeater della mia pagina)

<table CssClass="Text10" width="99%">
<tr bgcolor="#81B8ED">
<td CssClass="Text10">
data
<asp:TextBox runat="server" ID="tbData" Width="70px" CssClass="Text10" OnTextChanged="Page_Load" />
<asp:ImageButton runat="server" ID="imgData" ImageUrl="../images/Calendar_scheduleHS.png" AlternateText="Click to show calendar" />
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="tbData" PopupButtonID="imgData" />


</td>
<td CssClass="Text10">
tipo
<asp:DropDownList ID="ddlTipologia" runat="server" CssClass="Text11" OnSelectedIndexChanged="ddlRicercaStato_SelectedIndexChanged">
</asp:DropDownList></td>
<td cssclass="Text10">
stato
<asp:DropDownList ID="ddlStato" runat="server" CssClass="Text11" OnSelectedIndexChanged="ddlRicercaStato_SelectedIndexChanged">
</asp:DropDownList></td>
<td CssClass="Text10">
rgp&nbsp;<asp:DropDownList ID="ddlOwner" runat="server" CssClass="Text11" OnSelectedIndexChanged="ddlRicercaStato_SelectedIndexChanged">
</asp:DropDownList></td>
<td cssclass="Text10">
<asp:TextBox ID="tbDescrizione" runat="server" CssClass="Text11" Rows="2" TextMode="MultiLine" Width="250px" ></asp:TextBox></td>
<td cssclass="Text10">
<asp:Button ID="btnOK" runat="server" Text="Salva" /></td>
</tr>
</table>



Grazie!

Wamba Profilo | Expert

Ciao,
magari è colpa mia che non ho molto tempo per leggere il codice: Mi puoi spiegare più precisamente qual'è il tuo problema?
Identificare in un postback quale degli elementi di un repeater è stato cliccato?
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

squilibrio Profilo | Expert

Prima di tutto grazie per l'aiuto, ho inserito il codice sopra in uno user control

quindi non posso (come faccio spesso) aggiungere un link (o un pulsante) in ogni riga del repeater che ricarica la pagina con l'ID della riga (Pagina.aspx?ID=MioIDRiga) dato che non so in quale pagina potrò mettere lo user control

allora ho pensato, gestisco tramite ajax (ho già visto/utilizzato gli esempio dell'ajax tool kit, ma questa volta non so come adattarli al mio problema)

quindi al click di un oggetto (hyperlink o immagine... fai tu)

caricare (tramite l'ID della riga del repeater) i dati in alcuni campi (textbox e dropdownlist)

Grazie mille!

Wamba Profilo | Expert

Io la imposterei in questo modo:
Allora hai un controllo con un compito generico: in base a dove viene inserito deve fare qualcosa di diverso in base all'id della riga con un oggetto cliccato (imagebutton o linkedbutton).
Io sfrutterei il campo commandargument (che è presente in entrambi gli oggetti se non sbaglio) per stoccare il numero della riga come fai per le altre proprietà in binding. Interecetti l'evento associato al pulsante da controllo e attracerso sender.commandargument ricavi qual'è l'id della riga. Infine propaghi un evento del tuo controlli e lasci che sia la pagina o il controllo contenitore a decidere cosa fare.
Se non ho capitoil problme, non ti va bene la soluzione o non riesci a realizzarla chiedi pure. Se invece ti soddisfa fammi sapere che fa sempre piacere ;)
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

squilibrio Profilo | Expert

La tua soluzione mi piace, anche perchè mi basta risolvere il problema... non voglio usare ajax per forza

non capisco come inserire un button (server) e gestire il caricamento all'evento

potresti farmi un esempio???


Thanks

Wamba Profilo | Expert

Il button server ce l'hai è quello dentro il repeater e per quanto riguarda la gestione dell'evento del bottono è quella standard come in pagina.
Per quanto riguarda creare un evento personalizzato guarda questo link, mi pare che sia scritto bene.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

squilibrio Profilo | Expert

Potresti farmi un semplice esempio???

(non vedo il link tra l'altro ;-(()

Grazie

Wamba Profilo | Expert

Ok mi sono perso il CTRL-V , sono già sonato di mio se aggiungo la fretta e le classi JS che mi fanno dannare...

Devi dichiarare come attributo del tuo controllo un delegato e un evento che sfrutta il delegato:

public delegate void dlMyDelegate(int RowIndex);
public event dlMyDelegate MyEvent;

NB: Il delegato è un prototipo di funzione ovvero come dire una qualunque funzione che accetta questi parametri e che restituisce questo tipo.

In questo caso ho già previsto il parametro RowIndex che ti serviva.

Poi quando devi scatenare l'evento:
if (MyEvent!= null) { MyEvent.Invoke(RowId); }
Non ti dimenticare l'if perchè se nessuno ha agganciato l'evento e provi ad invocarlo di da una null exception.

Fammi sapere

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

squilibrio Profilo | Expert

Sinceramente non ho capito :-((((

Wamba Profilo | Expert

Dimmi che cosa non hai capito e cerco di spiegartelo meglio.
Probabilmente nel weekend (adsl/tempo/<b>fidanzata</b> permettendo) scrivo un post nel blog su questo argomento.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

squilibrio Profilo | Expert

Ci sono riuscito!!! Dopo un po di prove

ovviamente grazie al tuo aiuto!!

Wamba Profilo | Expert

L'unica cosa che mi diaspiace è che mi sono connesso ora per iniziare a scrivere il post, magarai qualche ora te la saresti risparmiata, hai mandato il post alle 23 di venerdì se era un problema di lavoro, si era trasformato in un incubo :
Comunque sono molto contento che tu ci sia riuscito, la creazione di controlli non è un argomento semplicissimo e tantomeno lo sono gli eventi custom.
Ricordati di chiudere il thread.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

squilibrio Profilo | Expert

No no, l'importante è averlo risolto (grazie a te!!!)

Wamba Profilo | Expert

Per chiunque leggesse questo post, qui può trovare informazioni su come creare e gestire eventi in custom control
http://blogs.ugidotnet.org/WamBlog/archive/2008/05/24/custom-event-in-custom-control.aspx.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5