Introduzione:
Nel caso che si devono creare delle griglie, con delle colonne che evidenziano tramite immagine lo stato dei dati, o altre indicazioni, tramite la creazione di colonne personalizzate possiamo dotare il controllo gridView di questa particolarità.
Di seguito viene illustrato come creare un controllo GridView, nel quale ci sia una colonna di tipo immagine, che in base al valore di una colonna nascosta, verrà visualizzata una determinata immagine (figura 1) .
Figura 1
Aggiungiamo nel nostro progetto web, un controllo gridView, ed un pulsante. Per il controllo gridview, impostiamo la proprietà autogeneratecolomn a false.
Passiamo in visualizzazione codice html, in questo modo impostiamo le colonne da visualizzare nella griglia.
Qui di seguito si riportano le colonne di cui è composto il controllo gridview.
<Columns>
<asp:BoundField DataField="ValoreStato" ReadOnly="true">
<ItemStyle Font-Size="0pt" Width="0px" Wrap="False" />
<HeaderStyle Font-Size="0pt" Width="0px" Wrap="False" />
<ControlStyle Font-Size="0pt" Width="0px" />
<FooterStyle Font-Size="0pt" Width="0px" Wrap="False" />
asp:BoundField>
<asp:TemplateField>
<HeaderTemplate>
<input ID="chkAll" runat="server"
type="checkbox" />
HeaderTemplate>
<ItemTemplate>
<asp:Panel ID="Panel2" runat="server" Height="16px" Width="20px">
<asp:CheckBox ID="chkSeleziona" runat="server" Text=" " Width="18px" />
asp:Panel>
ItemTemplate>
asp:TemplateField>
<asp:TemplateField HeaderText="Stato">
<HeaderStyle Font-Size="Smaller" Wrap="False" />
<ItemTemplate>
<asp:Image ID="ImgAccettato" runat="server" ImageUrl="~/Img/si.png"
ToolTip="Validato" />
<asp:Image ID="ImgRifiutato" runat="server" ImageUrl="~/Img/no.png"
ToolTip="Rifiutato" />
<asp:Image ID="ImgAttesa" runat="server" ImageUrl="~/Img/attesa.png"
ToolTip="In attesa di validazione" />
ItemTemplate>
<ItemStyle Wrap="False" />
asp:TemplateField>
<asp:BoundField DataField="Nome" HeaderText="Nome" />
<asp:BoundField DataField="Anni" HeaderText="Anni" />
Columns>
Notiamo con attenzione la creazione di queste colonne.
La prima colonna, chiamata ValoreStato di tipo bounField, avrà il compito di contenere il valore di ogni riga relativo allo stato, in questo modo a secondo del valore, verrà visualizzata una determinata immagine.
La seconda colonna di tipo template field, visualizzerà una colonna di tipo checkbox, in questo caso, può essere anche omessa.
La terza colonna, sempre di tipo templateField, avrà il compito di visualizzare l'immagine, in base al valore impostato nella prima colonna.
Come si vede, abbiamo degli oggetti di tipo itemTemplate, nel quale si trovano oggetti image, contenenti l'immagine da visualizzare.
Le ultime due colonne di tipo buondField, sono colonne che visualizzano i dati.
Terminata la personalizzazione del controllo gridView, passiamo in visualizzazione, codice, in particolare, nell'evento load della pagina, in modo che valorizziamo con dei dati, il controllo gridview.
Qui di seguito si riporta un esempio di codice.
Quando si creano le varie righe del controllo gridView, dobbiamo impostare l'immagine che dovrà essere visualizzata. Nell'evento RowDataBound, del controllo gridiView, dobbiamo rilevare i vari oggetti image, e renderli visibili o no, a seconda del valore della prima colonna,
Qui di seguito si riporta un esempio di codice.
Terminato ciò, non ci resta che cambiare i valori nella griglia, in modo che vengano visualizzate le varie immagini.
Nell'evento click del pulsante, cambiamo il valore della prima colonna, per ogni riga, in questo modo, ogni riga avrà un determinato valore.
Protected Sub BtnSi_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnSi.Click
Dim dttDati As DataTable = CType(ViewState("Dati"), DataTable)
dttDati.Rows(0)("ValoreStato") = 1
dttDati.Rows(1)("ValoreStato") = 2
GrvDati.DataSource = dttDati
GrvDati.DataBind()
End Sub
C#
protected void BtnSi_Click(object sender, EventArgs e)
{
DataTable dttDati = (DataTable)ViewState["Dati"];
dttDati.Rows[0]["ValoreStato"] = 1;
dttDati.Rows[1]["ValoreStato"] = 2;
GrvDati.DataSource = dttDati;
GrvDati.DataBind();
}
Conclusioni
Abbiamo visto una delle tante possibilità di come personalizzare il controllo GridView, in particolare visualizzare una colonna di tipo immagine, che indica visibilmente lo stato della riga a cui fa riferimento.
Tramite la parola download è possibile scaricare il file di progetto utilizzato, sia per il linguaggio Visual Basic Net e sia per C#.
1 commento:
Sei stato di grande aiuto, grazie.
Posta un commento