non so se possa andare; è solo un esempio di prova
Un asp:GridView viene collegato alla tabella regioni, che fa vedere i due campi:
codice_istat_regione e nome_regione
La pagina ha due pulsanti, il primo lavora lato server e serve a nascondere/visualizzare la prima colonna.
Il secondo pulsante lavoro lato client e serve a nascondere/visualizzare la seconda colonna.
pagina aspx
codice:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="nascondere colonna.aspx.vb" Inherits="CorsoApogeo_wrox_comandi_ed_associazione_di_dati_gridview_nascondere_colonna" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Pagina senza titolo</title>
<link href="../../../../stili/Styles.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
// <!CDATA[
var nascondiColonna = false;
function Button2_onclick()
{
VisColonna("GridView1", 1, nascondiColonna);
nascondiColonna = !nascondiColonna;
}
//-------------------------------------------------------------
//visualizza-nasconde una colonna di una tabella
//id=identificativo tabella
//colonna=indice colonna
//tb=true->visibile, false->invisibile
//-------------------------------------------------------------
function VisColonna(id, colonna, tf)
{
var tabella = null;
if(typeof(id) == "string")
tabella = document.getElementById(id);
else
tabella = id;
if(!tabella) return;
var tb = tabella.getElementsByTagName("TBODY")[0];
var righe = tb.getElementsByTagName("TR");
for(i = 0; i < righe.length; i++)
{
var colonneTD = righe[i].getElementsByTagName("TD");
for(j = 0; j < colonneTD.length; j++) if(colonna == j) colonneTD[j].style.display = (tf)? '': 'none';
var colonneTH = righe[i].getElementsByTagName("TH");
for(j = 0; j < colonneTH.length; j++) if(colonna == j) colonneTH[j].style.display = (tf)? '': 'none';
}
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Nascondi/Visualizza prima colonna (server)" Width="277px" />
<input id="Button2" style="width: 277px" type="button" value="Nascondi/Visualizza seconda colonna (client)" onclick="return Button2_onclick()" />
<hr />
</div>
<asp:GridView ID="GridView1" runat="server" EnableViewState="False">
</asp:GridView>
</form>
</body>
</html>
pagina di codice
codice:
Option Strict On
Partial Class CorsoApogeo_wrox_comandi_ed_associazione_di_dati_gridview_nascondere_colonna
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
BindData()
End If
End Sub
Private _nascondiColonna As Boolean = False
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.ViewState("nascondiColonna") Is Nothing Then
Me._nascondiColonna = True
Else
Me._nascondiColonna = Not CBool(Me.ViewState("nascondiColonna"))
End If
Me.ViewState("nascondiColonna") = Me._nascondiColonna = True
BindData()
End Sub
Private Sub BindData()
libreria.DataBind(Me.GridView1, StringaConnessione, "select * from regioni", New String() {"codice_istat_regione"})
End Sub
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
If Not Me._nascondiColonna Then Return
Dim display As String = "none"
If Not Me._nascondiColonna = True Then display = "block"
Dim row As GridViewRow = e.Row
row.Cells(0).Style.Add("display", display)
End Sub
End Class