Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Prendere una variabile dal DataReader inserirla in un DatSet

    Salvea a tutti e buona serata.

    Ho una pagina dove ricevo filtrato l'id dell'amministratore e estraggo i suoi datitramite un DataReader.
    Sempre nella stessa pagina estraggo i recoird di altri iscritti e li impagino avendo la possibilità di cliccare su ognuno per andare a una pagina successiva dove potrò aggiornare i loro dati.
    I dati degli iscritti li estraggo tramite un dataset.
    Ora quando clicco su uno di essi avrei la necessità di passare tramite URL sia l'id dell'iscritto da aggiornare che l'ID dell' amministratore.
    Utenti e amministratori si trovano tutti all'interno di una tabella.
    Il mio problema è che riesco a passare senza problemi l'id dell'iscritto da aggiornare ma non riesco a recuperare l'id dell'amministratore.
    é dovuto al fatto che come detto prima l'id dell'amministratore l'ottengo tramite Datareader mentre l'elenco degli iscritti tramite DataSet.
    Ho la possibilità di recuperare l'id dell'amministratore di passarlo come dato nel link?

    codice:
    <script language="c#" runat="server">
    //Estrae i record dal database
    public void Seleziona_Record()
    {
        String ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
            Server.MapPath("database/danielaDiCastro.mdb");
       OleDbConnection cn = new OleDbConnection(ConnString);
       
     //Apro la connessione;
      cn.Open();
      
     
      //Data adapter
      OleDbDataAdapter objAdapter = new OleDbDataAdapter("SELECT * FROM iscritti WHERE Stato = True ORDER BY nomeCognome ASC", cn);
      
      //Creo il dataset per la tabella news sulla sx
      DataSet ds = new DataSet();
      
      //Creo il dataset per la tabella sezione news
      DataSet dsTbNews = new DataSet();
      
        
        //Lo riempio
      //Calcolo i record da estrarre e riempio   il dataset della tabella sezione Attivita
      int startRecordTbNews = (int.Parse(PaginaTbNews.Value)-1)*int.Parse(Record_MaxTbNews.Value);
      objAdapter.Fill(dsTbNews, startRecordTbNews, int.Parse(Record_MaxTbNews.Value), "iscritti");
    
      GridTbNews.DataSource = dsTbNews.Tables[0].DefaultView;
      GridTbNews.DataBind();
    
      //Conta i numero di record Totali
      OleDbCommand myCmd = new OleDbCommand("SELECT Count(*) FROM iscritti", cn);
      Record_TotTbNews.Value = myCmd.ExecuteScalar().ToString();
      cn.Close();
    
      //Controllo i Link
      if((int.Parse(PaginaTbNews.Value)-1)<=0){
        Prev.Enabled = false;
      }
      else{
        Prev.Enabled = true ;
      }
      if((int.Parse(PaginaTbNews.Value)*int.Parse(Record_MaxTbNews.Value))>=int.Parse(Record_TotTbNews.Value))
        Next.Enabled = false;
      else
        Next.Enabled = true ;
    }
    
    //Controlla che link ha sollevato l'evento e aumenta o diminuisce la pagina corrente
    public void Paginazione(object sender, EventArgs e){
      if(((LinkButton)sender).ID=="Prev"){
        if((int.Parse(PaginaTbNews.Value)-1)>=0){
          PaginaTbNews.Value = (int.Parse(PaginaTbNews.Value)-1).ToString() ;
        }
      }
      else if(((LinkButton)sender).ID=="Next"){
        if((int.Parse(PaginaTbNews.Value)*int.Parse(Record_MaxTbNews.Value))<int.Parse(Record_TotTbNews.Value)){
          PaginaTbNews.Value = (int.Parse(PaginaTbNews.Value)+1).ToString() ;
        }
      }
      Seleziona_Record();
    }
    
    //Controlla se é la prima volta che la pagina viene visualizzata e in caso affermativo stampa
    //la prima pagina
    void Page_Load(Object sender, EventArgs e){
      if(!IsPostBack)
       Seleziona_Record();
       
       String ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database/danielaDiCastro.mdb");
    
            // Creiamo l'oggetto cn di tipo OleDbConnection
            // passando la stringa di connessione al costruttore
            OleDbConnection cn = new OleDbConnection(ConnString);
    
            // Apriamo la connessione
            cn.Open();
            
            String mail = Request["username"];
    
            // Componiamo la stringa di interrogazione al database
            String sql = "SELECT * FROM iscritti WHERE email = '" + mail + "'";
    
            // Creiamo l'oggetto cmd di tipo OleDbCommand
            // passando la Sql e la connessione al costruttore dell'oggetto
            OleDbCommand cmd = new OleDbCommand(sql, cn);
    
            // Creiamo un oggetto di tipo OleDbDataReader
            // Esso è assimilabile a un RecordSet con cursore di tipo forward-only in ASP tradizionale
            OleDbDataReader rdr = cmd.ExecuteReader();
            
            rdr.Read();
            
            String email = rdr["email"].ToString();
            String chiaveAccesso = rdr["chiaveAccesso"].ToString();
            
            lblMessaggioBenvenuto.Text = "" + rdr["nomeCognome"].ToString() + "";
            
            lblMenu.Text ="- " + "" + "Gestione iscritti non attivi" + "" + "
    " + "- " + "" + "Torna indietro" + "";                      
            // Chiudiamo il DataReader
            rdr.Close();
    
            // Chiudiamo la connessione al database
            cn.Close();
            }
    </script>
    Questo è il codice nel body

    codice:
    <input type="hidden" id="Record_MaxTbNews" value="5" runat="server">
    <input type="hidden" id="PaginaTbNews" value="1" runat="server">
    <input type="hidden" id="Record_TotTbNews" runat="server">
    <asp:DataList id="GridTbNews" runat="server" CellPadding="0" RepeatLayout="Flow">
    <ItemTemplate>
    <%#DataBinder.Eval(Container.DataItem,"nomeCognome") %>
    
    
    "><%#DataBinder.Eval(Container.DataItem,"email") %>
    
    
    </ItemTemplate>
    </ASP:DataList>
    
    
    
    
    <asp:LinkButton id="Prev" Text="Prec." OnClick="Paginazione" runat="server" Visible="True" />
    <asp:LinkButton id="Next" Text="Succ." OnClick="Paginazione" runat="server" Visible="True" />
    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

  2. #2
    Allora leggendo in giro mi è venuto in mente di creare due query all'interno del dataset.
    Una che mi estra tutti gli iscritti e una che mi recupera solo i dati dell'amministratore.

    codice:
    <script language="c#" runat="server">
    //Estrae i record dal database
    public void Seleziona_Record()
    {
        String ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
            Server.MapPath("database/danielaDiCastro.mdb");
       OleDbConnection cn = new OleDbConnection(ConnString);
       
     //Apro la connessione;
      cn.Open();
      
      String mail = Request["username"];
    
      //Data adapter
      OleDbDataAdapter objAdapter = new OleDbDataAdapter("SELECT * FROM iscritti WHERE Stato = True ORDER BY nomeCognome ASC", cn);
      OleDbDataAdapter objAdapterAmm = new OleDbDataAdapter("SELECT * FROM iscritti WHERE email = '" + mail + "'", cn);
      
      //Creo il dataset per la tabella news sulla sx
      DataSet ds = new DataSet();
      
      //Creo il dataset per la tabella sezione news
      DataSet dsTbNews = new DataSet();
      
        
        //Lo riempio
      //Calcolo i record da estrarre e riempio   il dataset della tabella sezione Attivita
      int startRecordTbNews = (int.Parse(PaginaTbNews.Value)-1)*int.Parse(Record_MaxTbNews.Value);
      objAdapter.Fill(dsTbNews, startRecordTbNews, int.Parse(Record_MaxTbNews.Value), "iscritti");
      objAdapterAmm.Fill(dsTbNews, "iscritti");
    
      GridTbNews.DataSource = dsTbNews.Tables[0].DefaultView;
      GridTbNews.DataBind();
    
      //Conta i numero di record Totali
      OleDbCommand myCmd = new OleDbCommand("SELECT Count(*) FROM iscritti", cn);
      Record_TotTbNews.Value = myCmd.ExecuteScalar().ToString();
       
      
      cn.Close();
    
      //Controllo i Link
      if((int.Parse(PaginaTbNews.Value)-1)<=0){
        Prev.Enabled = false;
      }
      else{
        Prev.Enabled = true ;
      }
      if((int.Parse(PaginaTbNews.Value)*int.Parse(Record_MaxTbNews.Value))>=int.Parse(Record_TotTbNews.Value))
        Next.Enabled = false;
      else
        Next.Enabled = true ;
    }
    
    //Controlla che link ha sollevato l'evento e aumenta o diminuisce la pagina corrente
    public void Paginazione(object sender, EventArgs e){
      if(((LinkButton)sender).ID=="Prev"){
        if((int.Parse(PaginaTbNews.Value)-1)>=0){
          PaginaTbNews.Value = (int.Parse(PaginaTbNews.Value)-1).ToString() ;
        }
      }
      else if(((LinkButton)sender).ID=="Next"){
        if((int.Parse(PaginaTbNews.Value)*int.Parse(Record_MaxTbNews.Value))<int.Parse(Record_TotTbNews.Value)){
          PaginaTbNews.Value = (int.Parse(PaginaTbNews.Value)+1).ToString() ;
        }
      }
      Seleziona_Record();
    }
    Mi sono bloccato qui perchè non mi viene in mente come mostrare insieme a video sia i dati di tutti gli iscritti che quuelli dell'amministratore.
    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

  3. #3
    Ok risolto.

    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

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.