Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    12

    [2.0-C#] Update con sqldatasource

    Salve a tutti,

    Sono un niubbo di ASP.Net ci stò trafficando da poche settimane.
    Ho un paio di problemi con un update che stò cercando di fare tramite sqldatasource.

    Stò cercando di creare un'interfaccia per permettere all'utente di modificare alcuni campi del suo profilo. Volevo prima caricare le vecchie impostazioni, e poi permettere all'utente di modificare alcuni parametri.

    Il primo problema che ho riscontrato è quello di inserire l'UserName nella select.
    L'unico modo con cui sono riuscito a farlo è inserendolo prima in una textbox invisibile e prendere il dato da li. Però è un sistema che, ovviamente, non mi piace per niente. Frutto di ore a cercare una soluzione e non riuscire a trovarla.

    La mia idea iniziale era provare a inserirlo direttamente nella query, ma non so come fare e non riesco a trovare un'esempio per vedere come è stato fatto.

    Il secondo problema è la parte commentata nel codice C#.
    Io Volevo inserire nei TextBox il vecchio dato preso dal database. Il problema è che se gli carico il dato dal Page_Load come faccio ora, quando va a modificare il database se ne frega di quello che ho inserito nel Form e mi tiene conto del dato preso dal Page_Load.




    Di seguito il codice:


    Codice C#

    Codice ASP.NET
    codice:
    <asp:LoginView runat="server" ID="LoginView1">
        <AnonymousTemplate>
        Non sei Abilitato a Vedere questa pagina.
        </AnonymousTemplate>
        <LoggedInTemplate>
       Benvenuto <% Response.Write(System.Web.HttpContext.Current.User.Identity.Name.ToString()); %>, sei abilitato a vedere questa pagina
    
        <asp:Label ID="status_update" runat="server" />
    
        <asp:TextBox runat="server" ID="Localita"></asp:TextBox>
        <asp:TextBox runat="server" ID="username" Visible="false"></asp:TextBox>    
        <asp:Button runat="server" OnClick="update_user" Text="Modifica" />
              <asp:SqlDataSource ID="UpdateUserSQL" runat="server" ConnectionString="<%$ ConnectionStrings:pressgate_lightConnectionString %>"
                 UpdateCommand="UPDATE Users SET   Localita = @Localita WHERE  (Login = @username)" >
                 <UpdateParameters>
                 <asp:ControlParameter Name="Localita" Type="String" ControlID="Localita" PropertyName="Text" /> 
                 <asp:ControlParameter Name="username" Type="String" ControlID="username" PropertyName="Text" /> 
                 </UpdateParameters>
              </asp:SqlDataSource>
        </LoggedInTemplate>
    </asp:LoginView>

    codice:
     protected void Page_Load(object sender, EventArgs e)
        {
            TextBox txtbox_localita = (TextBox)LoginView1.FindControl("Localita");
            TextBox txtbox_username = (TextBox)LoginView1.FindControl("username");
    
              txtbox_username.Text = System.Web.HttpContext.Current.User.Identity.Name.ToString();
    
                string confQuery = @"Select * from Users";
                confQuery += " where login = '" + System.Web.HttpContext.Current.User.Identity.Name.ToString() + "'";
    
                using (SqlConnection con = new SqlConnection(RC.ConnectionString))
                {
                    con.Open();
    
                    using (SqlCommand cmd = new SqlCommand(confQuery, con))
                    using (SqlDataReader rd = cmd.ExecuteReader())
                    {
                        while (rd.Read())
                        {
                            txtbox_localita.Text = Convert.ToString(rd["Localita"]);
    
    
                        }
                    }
                }
    
        }
    
        protected void update_user(object sender, EventArgs e)
        {
            
    
    
            SqlDataSource DataSource = new SqlDataSource();
            DataSource = (SqlDataSource)LoginView1.FindControl("UpdateUserSQL");
            DataSource.Update();
    
            Label statuslbl = new Label();
            statuslbl = (Label)LoginView1.FindControl("status_update");
            statuslbl.Text = "Profilo Modificato con Successo";
               
        }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    12
    Ho risolto il problema del nome utente creando la query nel codice:

    codice:
     DataSource.UpdateCommand =" UPDATE Users SET   Localita = @Localita WHERE  (Login = '" + System.Web.HttpContext.Current.User.Identity.Name.ToString() +"')";
    Mi rimane però sempre il problema che se inserisco il dato da PageLoad la modifica non tiene conto di quello scritto nel textbox, ma si ricorda solo di quello che ho inserito nel PageLoad. Non permettendomi quindi la modifica del campo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    12
    Ok, per il problema on pageload, ho messo tutto dentro una funzione (getDatauser) e la richiamo nel pageLoad solo se !IsPostBack altrimenti la richiamo dalla funzione di update dopo che ha modificato i dati.

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.