volevo sapere esiste un metodo per carpire il valore che sta per essere stampato in una BoundColumn oppure in una label contenuta nella TEmplateColumn ?
devo passare tale valore ad una templatecolumn creata dinamicamente !!
volevo sapere esiste un metodo per carpire il valore che sta per essere stampato in una BoundColumn oppure in una label contenuta nella TEmplateColumn ?
devo passare tale valore ad una templatecolumn creata dinamicamente !!
Gli eventi che vengono generate quando si crea un datagrid sono ItemDataBound e ItemCreated
Hey hey, my my Rock and roll can never die!
e come posso implementare una cosa simile nella mia situazione cioè quando creo le mie templatecolumn in maniera dinamica?
ti posto una valanga di codice e cerco di commentartelo meglio possibile
questo è il mio datagrid
<aspataGrid ID="dataGrid1" GridLines="Both" ItemStyle-HorizontalAlign="center" ItemStyle-Height="30" runat="server" BorderColor="black" Width="98%" AutoGenerateColumns="false"
ItemStyle-CssClass="nerotesto" HeaderStyle-Width="35%" HeaderStyle-HorizontalAlign="center" HeaderStyle-Font-Bold="true" HeaderStyle-Height="50" ShowHeader="true" ItemStyle-Wrap="false">
<columns>
<asp:templatecolumn ItemStyle-Width="12%" ItemStyle-HorizontalAlign="left" >
<itemtemplate>
<asp:Label id="numero" runat="server" Text='<%# Container.DataItem("numero") &"
"& Container.DataItem("tipologia")%>' />
</itemtemplate>
</asp:templatecolumn>
</columns>
</aspataGrid>
le template column che non sono mai statiche ma variano a seconda di alcuni parametri dati vengono generate dinamicamente all'interno della Sub Page_Load() .
questa porzione di codice è interna a un ciclo FOR
Dim tc2 As New TemplateColumn()
tc2.HeaderTemplate = New DataGridTemplate(ListItemType.Header , "", valoreGiornoTesto &"
"& giornoTemp &"
"& meseTemp &"
"& RIGHT(annoTemp,2), "")
tc2.ItemTemplate = New DataGridTemplate(ListItemType.Item, giornoTemp, dataTemporanea, "Singola")
DataGrid1.Columns.Add(tc2)
questa è la classe DataGridTemplate che viene richiamata per creare una nuova TemplateColumn
Private Class DataGridTemplate
Implements ITemplate
Dim templateType As ListItemType
Dim columnName As String
Dim TestoHeadervar As string
Dim tipologiaStanzaVar As string
Sub New(ByVal type As ListItemType, ByVal ColName As String, ByVal TestoHeader As String, ByVal tipologiaStanza as String)
templateType = type
columnName = ColName
TestoHeaderVar = TestoHeader
tipologiaStanzaVar = tipologiaStanza
End Sub
Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
Dim lc As New Literal()
Dim lblLabel as New Label
Dim lblLabelHeader as New Label
Select Case templateType
Case ListItemType.Header
lblLabelHeader.Text = TestoHeaderVar
container.Controls.Add(lblLabelHeader)
Case ListItemType.Item
lblLabel.Text = StampaValore(TestoHeaderVar, tipologiaStanzaVar)
container.Controls.Add(lblLabel)
End Select
End Sub
Function StampaValore(data as object, tipologiaStanza as string) As String
' Questa funzione fa dei controlli (e qui avrei bisogno del parametro della TEmplateColumn "Statica" ) e sputa a video un numero o una gif
End Function
End Class
davvero non ho la più pallida idea di come poter fare