LayoutTemplate in listview

venerdì 13 giugno 2008 - 10.33

Stroke Profilo | Junior Member

Ciao a tutti.
Siamo in vs2008 netframwork 3.5.
Ho una listview che contiene un LayoutTamplate.
Ma ho necesstià di modificare questo layout dinamicamente.
Il layout è il seguente:
<LayoutTemplate>
<table cellpadding="2" width="1100px" border="1" id="tbl1" runat="server">
<tr runat="server">
<td runat="server">
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr runat="server" style="">
<th runat="server">
prog
</th>
<th runat="server">
Descrizione
</th>
<th runat="server">
Immagine
</th>
<th runat="server" class="ColonnaQ" visible=<%# ColonnaVisibile("Q01") %> >
<%# TestoLabel("Q01") %>
</th>
<th runat="server" class="ColonnaQ" visible=<%# ColonnaVisibile("Q02") %>>
<%# TestoLabel("Q02") %>
</th>
<th id="td1" runat="server">
</td>
</tr>
<tr id="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server" style="">
<asp:DataPager ID="DataPager1" runat="server">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
</td>
</tr>
</table>
</LayoutTemplate>
Le colonne Q1 e Q2 dovrebbero essere visibili o invisibili e cambiare il titolo di colonna a secondo di determinate condizioni, ma nel caricamento della pagina il codice inserito in <%# %> non viene considerato.
C'è un modo per aggiornare questa situazione.
Grazie a tutti
Furio
http://www.opsi.ws

Wamba Profilo | Expert

Così su due piedi mi vengono in mente due strade:
1) Difficile: Crearti un tuo controllo LayoutTemplate e gestire il tutto lato codice pilotando la renderizzazione.
2) Facile : Crei tutti i controlli identici e "vuoti" e poi personalizzi lato javascript con una funzione.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

Stroke Profilo | Junior Member

Opterei per la soluzione lato server in quanto la condizione che cambia la situazione è una condizione di database, ma su msdn non sono riuscito a trovare niente che comandi la renderizzazione del layout da codice.
Se hai qualche suggerimento lo accetto volentieri.
Grazie
Furio
http://www.opsi.ws

Wamba Profilo | Expert

Per quanto riguarda la scelta: non è una discriminante.
Puoi creare una funzione js:
function settaTutto(baseId, Title, textValue)
{
document.getElementById("MyTitle_" + baseId).innerHTML = Title;
document.getElementById("MyTxt_" + baseId).value= textValue;
}

poi crei un js fatto così (uso una stirng aper fare prima, ma è meglio uno stringBuilder)
js += String.Format("settaTutto({0}, '{1}', '{2}');", id, title, txtInit);

poi registri il js con Page.ClientScript.RegisterStartupscript (sono andato a mente).

Se decidi di proseguire per la strada server (se te la senti è sicuramente l'opzione migliore)
Dai un'occhiata a come implementare l'interfaccia ITemplate: http://msdn.microsoft.com/en-us/library/system.web.ui.itemplate.aspx
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

Stroke Profilo | Junior Member

Senz' ombra di dubbio seguirò la strada server, perchè mi trovo molto più a mio agio che con javascript.
Ti ringrazio per il link che mi haio mandato, era proprio quello che cercavo.
Grazie
Furio
http://www.opsi.ws

Wamba Profilo | Expert

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