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

    nascondere colonne di un datagrid

    ciao a tutti.
    ho la seguente stored procedure che carica i dati in un datagrid DGelenco

    codice:
    CREATE procedure select_appelli as
    begin
    	select sede as Sede, data as DataAppello, code as Codice
    	from esame 
    	where data > getdate()
    	order by sede, data
    end
    GO
    dove sede e dataappello devono essere visualizzate e codice deve esser nascosta.

    quando vado ad inserire una colonna di tipo linkbutton, la colonna dataappello me la

    duplica come da immagine. a questo punto, vorrei nascondere la terza e la quarta

    colonna quindi scrivo:

    codice:
    	DGelenco.Columns(2).Visible = False
    	DGelenco.Columns(3).Visible = False
    (visto che le colonne del datagrid partono da 0) ma ho questo errore:

    codice:
    Errore server nell'applicazione '/BasiDiDati'.
    --------------------------------------------------------------------------------
    
    Index non compreso nell'intervallo. Richiesto valore non negativo e minore della 
    
    dimensione dell'insieme. Nome parametro: index 
    Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. 
    
    Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere 
    
    l'analisi dello stack. 
    
    Dettagli eccezione: System.ArgumentOutOfRangeException: Index non compreso 
    
    nell'intervallo. Richiesto valore non negativo e minore della dimensione 
    
    dell'insieme. Nome parametro: index
    
    Errore nel codice sorgente: 
    
    Riga 84: 		DGelenco.Columns(1).Visible = False	ERRORE
    Riga 85: 		DGelenco.Columns(2).Visible = False
    perchè? se invece sscrivo

    codice:
    	DGelenco.Columns(0).Visible = False
    non ho nessun errore e la prima colonna mi sparisce correttemente. perchè non accetta

    gli indici 2 e 3?
    Immagini allegate Immagini allegate

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    perche' non utilizzi semplicemente le <boundcolumn con un datafield, mettendo soltanto quelle che ti servono ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    perche' non utilizzi semplicemente le <boundcolumn con un datafield, mettendo soltanto quelle che ti servono ?
    potresti farmi un esempio? cmq non riesco a capire perchè le colonne le visualizza correttemente ma ne conta una sola...
    grazie

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    codice:
    <asp: datagrid runat="server">
    <Columns>
    <asp:BoundColumn HeaderText="sede" DataField="sede"></asp:BoundColumn>
    <asp:BoundColumn HeaderText="data" DataField="data" Visible=False></asp:BoundColumn>
    <asp:BoundColumn HeaderText="code" DataField="code" Visible=False></asp:BoundColumn>
    .
    .
    .
    </Columns>
    </asp: Datagrid>

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    ma da codice vb non si può fare nulla? praticamente, la colonna data deve essere una hyperlinkcolumn, la colonna sede deve essere visualizzata semplicemente e la colonna code deve essere nascosta.
    grazie ancora

  6. #6
    i controlli asp.net come la datagrid sono gestibili dichiarandoli nell'html come l'esempio che ti e' stato fatto oppure istanziandoli, e valorizzandoli da codice es. (cosi al volo tanto per fare un semplice esempio)
    codice:
    Dim dg As New DataGrid
    Dim bcol As New BoundColumn
    bcol.Visible = False
    bcol.DataField = "tuocampo"
    dg.Columns.Add(bcol)
    tuapagina.controls.add(dg)
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    ciao! usufruisco della tua gentilezza ancora un pò...
    ho scritto questo nell'evento page_load

    codice:
    MyBase.Controls.Add(stud.visualAppelli())
    e la funzione è la seguente:

    codice:
    Public Function visualAppelli() As DataGrid
    ...
    		Dim dg As New DataGrid
    		Dim bcol As BoundColumn
    		bcol = New BoundColumn
    		bcol.Visible = True
    		bcol.DataField = "DataAppello"
    		dg.Columns.Add(bcol)
    		bcol = New BoundColumn
    		bcol.Visible = True
    		dg.Columns.Add(bcol)
    		bcol.DataField = "Sede"
    		bcol = New BoundColumn
    		bcol.Visible = False
    		bcol.DataField = "Codice"
    		dg.Columns.Add(bcol)
    		dg.Visible = True
    		Return dg
    non ho nessun errore, cioè la pagina viene visualizzata, ma non c'è traccia del datagrid creato. perché?

    grazie ancora dell'aiuto

  8. #8
    hai chiamato il databind della datagrid prima di dire che non si visualizza? (dg.databind)
    Saluti a tutti
    Riccardo

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83


    piccola svista... ho modificato la funzione nel seguente modo:

    codice:
    	dg.Visible = True
    	dg.DataBind()	'faccio il databind
    	Return dg
    ma come prima: niente errori ma niente datagrid
    grazie veramente x l'aiuto

  10. #10
    Stai facendo una cosa facil in un modo difficile. Perche' vai a fare una funzione per avere una datagrid? Dichiarala nell'html, usufruisci del comodo designer per le proprieta' offerto da visual studio, applica piu' semplicemente gli stili e goditi l'ambiente.
    Altrimenti se vuoi proprio farti del male, e' inutile che chiami il databind di un oggetto che succhia i dati da una datasource "prima" di averlo collegato alla sua datasource.
    Saluti a tutti
    Riccardo

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.