Fattar inte vad jag gör för fel. Min kod ser ut så här: Jodå, posten uppdateras i databasen. Inget problem där. Problemet är bara att du ändrar tillbaka värdena i fälten till utgångsvärdena innan du använder värdena i databasfrågan. Fattar vad du menar, men hur ska jag då göra för att uppdatera? Jag menar jag måste ju hämta posten från atabasen först. I Page_Load får du kolla ifall this.IsPostBack är sant eller inte, och se till att du bara hämtar in datat när sidan laddas första gången. Bästa är om du hämtar data ur DB och skriver till textboxarna i Page_Init oavsett om det är Postback eller inte. Då kommer textfälten oxå att behålla de nya värden användaren skriver in PLUS att du slipper en massa skräp i VIEWSTATE. JApp- det har du rätt i Göran - bäst å kolla upp IsPostBack i alla lägen.Uppdateringen vägrar
<code>
protected void Page_Load(object sender, EventArgs e)
{
base.Page.Title = "Golden Eagles - Administrera ditt konto";
string myUser = User.Identity.Name.ToString();
DataSet dsMember = new DataSet();
dsMember = myDB.getMemberData(myUser);
if (dsMember != null)
{
foreach (DataRow dr in dsMember.Tables[0].Rows)
{
txtFName.Text = (string)dr["fName"];
txtLName.Text = (string)dr["lName"];
txtAddress.Text = (string)dr["address"];
txtZipCode.Text = (string)dr["zipCode"];
txtcity.Text = (string)dr["city"];
txtPhone.Text = (string)dr["phone"];
txtCellPhone.Text = (string)dr["cellPhone"];
imgMember.ImageUrl = "~/memberPics/members/" + (string)dr["picName"];
}
}
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
string myUser = User.Identity.Name.ToString();
string myFName = txtFName.Text;
string myLName = txtLName.Text;
string myAddress = txtAddress.Text;
string myZipCode = txtZipCode.Text;
string myCity = txtcity.Text;
string myPhone = txtPhone.Text;
string myCell = txtCellPhone.Text;
lblResult.Text = myUser;
myDB.updateMemberData(myUser, myFName, myLName, myAddress, myZipCode, myCity, myPhone, myCell);
Server.Transfer("admin.aspx");
}
</code>
Min klass:
<code>
public string updateMemberData(string _user, string _fName, string _lName, string _address, string _zipCode, string _city, string _phone, string _cell)
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("updateMemberData", conn);
cmd.CommandType = CommandType.StoredProcedure;
// SQL parameters...
cmd.Parameters.Add(new SqlParameter("@user", SqlDbType.NVarChar, 256));
cmd.Parameters["@user"].Value = _user;
cmd.Parameters.Add(new SqlParameter("@fName", SqlDbType.NVarChar, 20));
cmd.Parameters["@fName"].Value = _fName;
cmd.Parameters.Add(new SqlParameter("@lName", SqlDbType.NVarChar, 20));
cmd.Parameters["@lName"].Value = _lName;
cmd.Parameters.Add(new SqlParameter("@address", SqlDbType.NVarChar, 30));
cmd.Parameters["@address"].Value = _address;
cmd.Parameters.Add(new SqlParameter("@zip", SqlDbType.NVarChar, 6));
cmd.Parameters["@zip"].Value = _zipCode;
cmd.Parameters.Add(new SqlParameter("@city", SqlDbType.NVarChar, 20));
cmd.Parameters["@city"].Value = _city;
cmd.Parameters.Add(new SqlParameter("@phone", SqlDbType.NVarChar, 20));
cmd.Parameters["@phone"].Value = _phone;
cmd.Parameters.Add(new SqlParameter("@cell", SqlDbType.NVarChar, 20));
cmd.Parameters["@cell"].Value = _cell;
try
{
conn.Open(); // Opens the connection...
cmd.ExecuteNonQuery(); // Execute the SQL query...
return "Dina data är ändrade."; // Return...
}
catch (Exception err)// Error ends up here...
{
return "Det gick inte att uppdatera dina data.<br />" + err.Message; // Returns...
}
finally
{
conn.Close();// Close the connection...
}
}
</code>
Kör jag den lagrade proceduren i SQL Server så fungerar det, men inte när jag kör det på webbsidan. Jag får inga felmeddelande eller nåt, det ändras bara inte i databasen.Sv: Uppdateringen vägrar
Sv:Uppdateringen vägrar
Sv: Uppdateringen vägrar
Sv: Uppdateringen vägrar
En kanonartikel i ämnet finner den engelsk-kunnige på
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspxSv: Uppdateringen vägrar