Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Datagrid - come visualizzare i dati

    Scusate la domanda sciocca, sono ancora agli inizi con .NET
    Per stampare dei dati da un database (diciamo Access) posso usare il seguente codice:

    codice:
     System.Data.IDataReader MyQuery() {
                string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=database.mdb";
                System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
    
                string queryString = "SELECT * FROM myTable";
                System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
                dbCommand.CommandText = queryString;
                dbCommand.Connection = dbConnection;
    
                dbConnection.Open();
                System.Data.IDataReader dataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    
                return dataReader;
            }
    
         void Page_Load(Object sender, EventArgs e){
    
                DataGrid1.DataSource = MyQuery();
                DataGrid1.DataBind();
    
         }
    e poi richiamarmi il DataGrid con:

    codice:
    <asp:DataGrid id="DataGrid1" runat="server" />
    Questo mi stampa una tabella con i dati del database e i nomi delle colonne; ora, ovviamente in una situazione REALE di un sito non vorro' stampare le colonne e forse non vorro' stampare una tabella (ma per es. MyQuery("colonna1") + "
    " + MyQuery("colonna2"), ecc.) e vorro' potere utilizzare degli stili per la visualizzazione dei miei dati.
    Come si fa??? Ho letto che bisognerebbe crearsi un template ma tutto cio' che ho visto era in VB, mentre io uso il C#...
    Perfavore aiutatemi o postate un link dove e' spiegato come si fa in C#..
    Grazie anticipatamente!!
    We live thinking we will never die.
    We die thinking we had never lived.

  2. #2
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Puoi usare il datareader,
    ora, non uso c# ma vb, però il procedimento è identico:
    istanzi una variabile come istanza di "System.Data.SqlDataReader" oppure "System.Data.OleDbDataReader" poi, fai un ciclo "while [variabile datareader].read() response.write datareader.Item(0) next" questo fa vedere i valori della colonna 0, cioè la prima
    poi chiudi il datareader, che se vogliamo è simile al recordset in asp normale

    spero di averti aiutato, mi spiace non avere il codice in c#


  3. #3
    Grazie per la risposta Aki,
    io ho gia' usato un DataReader nel precedente esempio;
    quindi questo vuol dire che se scrivo:

    codice:
    void Page_Load(Object sender, EventArgs e){
    
                While (MyQuery.Read()){
    
    Response.Write(MyQuery.Item(col1));//questo non so se funziona in C#
    
    }
    
         }
    Insomma praticamente dovrebbe funzionare , cosi'?
    oppure il ciclo While lo dovrei mettere proprio all'interno del codice html?
    We live thinking we will never die.
    We die thinking we had never lived.

  4. #4
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    NONE
    non devi scrivere
    codice:
    Response.Write(MyQuery.Item(col1));   //per la colonna1
    ma
    codice:
    Response.Write(datareader.Item(0));   //per la colonna1
    ovviamente sostituisci 'datareader' con la variabile usata per il datareader

    spero sia giusto


  5. #5
    No, non funziona

    Errore in While (MyQuery.Read()), mi scrive "CS1002: ; expected"

    Ma come si fa C#????
    We live thinking we will never die.
    We die thinking we had never lived.

  6. #6
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    NONE NONE
    MyQuery DIMENTICALO
    codice:
    while datreader.read() {
       response.write(datareader.item(1));
    next
    }
    assumendo che 'datareader' sia la variabile nel quale è memorizzato il datareader


  7. #7
    Ti ringrazio per la pazienza

    Io avevo chiamato MyQuery il datareader... diciamo che dall'inizio dovro' scrivere:
    codice:
        System.Data.IDataReader mydatareader() {
                string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=database.mdb";
                System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
    
                string queryString = "SELECT * FROM [mytable]";
                System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
                dbCommand.CommandText = queryString;
                dbCommand.Connection = dbConnection;
    
                dbConnection.Open();
                System.Data.IDataReader dataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    
                return dataReader;
            }
    quindi ho chiamato il mio datareader "mydatareader";
    poi scrivo:

    codice:
     <%
            while (mydatareader.read()) {
       response.write(mydatareader.item(1));
    }
             %>
    ma questo mi da il seguente errore:

    CS0119: 'ASP.NewFile_aspx.mydatareader()' is a 'method', which is not valid in the given context.

    Quindi ho l'impressione che ho sbagliato forse qualcosa all'inizio
    We live thinking we will never die.
    We die thinking we had never lived.

  8. #8
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    ulla, forse ho capito

    il datareader e la connessione devono essere in una funzione, mettiamo che si chiami miafunz e il datagrid sia dgrid

    allora scrivi
    codice:
    void Page_Load() {
    dgrid.DataSource = miafunz();
    dgrid.DataBind
    }
    credo sia così

  9. #9
    si, questo l'avevo scritto all'inizio e funziona se nella pagina inserisci un datagrid con id "dgrid"
    Pero' il mio problema e' che io non voglio usare un datagrid o almeno usarlo ma in modo che mi importi solo i campi desiderati senza mettermeli su una tabella (una situazione tipo quella che avevi descritto con un ciclo While e un Response.Write(mydatareader.Item[0]) per visualizzare una colonna, ecc.
    Un po' come il vecchio ASP...
    We live thinking we will never die.
    We die thinking we had never lived.

  10. #10
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    scusa ho sbagliato, facciamo x benino :
    • Apri la sub Page_Load()
      apri la connessione con la stringa di connessione giusta
      crea la stringa sql
      apri il command con l'sql e la connessione
      apri un datareader con argomento il command
      ciclo while:


    ciclo while:
    codice:
    while datareader.read() {
       response.write(datareader.Item(0))
    next
    }
    o forse senza 'next'

    poi chiudi datareader e connessione e NON mettere datagrid nè dataset o vari

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 © 2026 vBulletin Solutions, Inc. All rights reserved.