Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83

    Gridview: se nascondo colonne spariscono i dati

    Ciao a tutti
    Ho il seguente gridview:

    codice:
    <asp:GridView ID="GvRichieste" runat="server" AutoGenerateColumns="False" CssClass="Lista"
        DataKeyNames="ID" EmptyDataText="Nessuna richiesta disponibile." OnSelectedIndexChanged="GvRichieste_SelectedIndexChanged" Width="27px">
        <Columns>
          <asp:BoundField DataField="Colonna0" HeaderText="Colonna0"><ItemStyle Width="100px" /></asp:BoundField>
          <asp:BoundField DataField="Colonna1" HeaderText="Colonna1" />
          <asp:BoundField DataField="Colonna2" HeaderText="Colonna2"/>
          <asp:BoundField DataField="Colonna3" HeaderText="Colonna3" ><ItemStyle Width="100px" /></asp:BoundField>
          <asp:BoundField DataField="Colonna4" HeaderText="Colonna4"><ItemStyle Width="100px" /></asp:BoundField>
    ...
        </Columns>
        <HeaderStyle CssClass="Remark" Width="1%" />
      </asp:GridView>
    I dati contenuti nelle colonne 3 e 4 dovrebbero essere nascosti ma se imposto:

    codice:
     
    GvRichieste.Columns[3].Visible = false;
    GvRichieste.Columns[4].Visible = false;
    i dati contenuti non riesco più a visualizzarli (il text è vuoto).

    Perchè? Come nasconderlo?
    Avevo pensato di impostare la proprietà style="display:none" ma dove impostarlo? ho provato nell'asp:boundfield ma mi da l'errore che non esiste la proprietà style.

    Grazie a tutti...

    :berto: :berto:

  2. #2
    mmmhhh...

    E se usassi un <ItemTemplate> inserendo un Hidden field contenente il valore?

    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    grazie dell'idea...
    potresti xò farmi un esempio ke sto cercando online ma non sto trovando nulla?

    grazie ancora

  4. #4
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    anche io ho avuto il tuo stesso problema
    ho cercato su internet e infatti anche altri forumisti avevano queto problema

    ho risolto mettendo un datagrid invece del gridview
    ci sono anche altre cose che funzionano male nel gridview......penso che non lo hanno testato per bene!!!
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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
    Pietro

  6. #6
    Originariamente inviato da acsp
    grazie dell'idea...
    potresti xò farmi un esempio ke sto cercando online ma non sto trovando nulla?

    grazie ancora
    Dovrebbe funzionare così...

    codice:
    <asp:GridView ID="GvRichieste" runat="server" AutoGenerateColumns="False" CssClass="Lista"
        DataKeyNames="ID" EmptyDataText="Nessuna richiesta disponibile." onSelectedIndexChanged="GvRichieste_SelectedIndexChanged" Width="27px">
        <Columns>
          <asp:BoundField DataField="Colonna0" HeaderText="Colonna0"><ItemStyle Width="100px" /></asp:BoundField>
          <asp:BoundField DataField="Colonna1" HeaderText="Colonna1" />
          <asp:BoundField DataField="Colonna2" HeaderText="Colonna2"/>
          <asp:TemplateField>
            <ItemTemplate>
              <input type="hidden" id="colonna3" value='<%# Bind("Colonna3") %>' runat="server" /> 
            </ItemTemplate>
          </asp:TemplateField>
          <asp:TemplateField>
            <ItemTemplate>
              <input type="hidden" id="colonna4" value='<%# Bind("Colonna4") %>' runat="server" /> 
            </ItemTemplate>
          </asp:TemplateField>
        </Columns>
    </asp:GridView>
    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Se l'esigenza è quella che penso, tieni presente che uno dei vantaggi del gridview rispetto al datagrid è quello di supportare chiavi multiple.
    Es:
    .... DataKeyNames="nome_colonna1,nome_colonna2,nome_col onna3"....
    poi recuperi il tutto utilizzando l'indice dell'array:
    codice:
    dim chiave_uno as string =tuo_grid_view.DataKeys(e.NewSelectedIndex).Values(0).ToString()
    dim chiave_due as string =tuo_grid_view.DataKeys(e.NewSelectedIndex).Values(1).ToString()
    ecc...
    Ciao
    Legnetto

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    wow...
    sono sbalordita da quante soluzioni mi sono arrivate!!! grazie a tutti

    cmq ho risolto in un altro modo ke mi sembra il più semplice di tutti. siccome avevo già implementato una funzione FormattaGV che mi scorreva tutto il gridview e, in base al testo contenuto, faceva delle cose, ho fatto:

    codice:
    Public void Formatta GV
    {
        GvRichieste.HeaderRow.Cells[3].Visible = false;
        GvRichieste.HeaderRow.Cells[4].Visible = false;
        for (int i = 0; i < GvRichieste.Rows.Count; i++)
        {
              GvRichieste.Rows[i].Cells[3].Visible = false;
              GvRichieste.Rows[i].Cells[4].Visible = false;
        ...
        }
    }
    in questo modo nascondo le celle e non vado a toccare nè la struttura del gridview nè il javascript che, mi dicono, sia ottimo ma forse non funziona su mozilla...

    grazie tanto a tutti



  9. #9
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    ma quindi senza usare javascript non si poteva fare come il datagrid?
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  10. #10
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da Legnetto
    Se l'esigenza è quella che penso, tieni presente che uno dei vantaggi del gridview rispetto al datagrid è quello di supportare chiavi multiple.
    Es:
    .... DataKeyNames="nome_colonna1,nome_colonna2,nome_col onna3"....
    poi recuperi il tutto utilizzando l'indice dell'array:
    codice:
    dim chiave_uno as string =tuo_grid_view.DataKeys(e.NewSelectedIndex).Values(0).ToString()
    dim chiave_due as string =tuo_grid_view.DataKeys(e.NewSelectedIndex).Values(1).ToString()
    ecc...
    Ciao
    Legnetto
    ripeto....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.