Nån som kan hjälpa mej med detta? Den ser ut så här: Det stämmer inte riktigt att databasen inte uppdateras, det gör den. Det är bara det att värdena i textboxarna inte ändras. Kommenterar jag bort denna rad "txtFName.Text = cust.FName;" och neråt i PageLoad så uppdateras det som det ska, men då finns ju inte de ursprungliga värdena kvar. Det måste tydligen vara nåt som blir fel när jag läser in datan, eller? Hur verkar det om du lägger en if (!IsPostBack) runt koden du kommenterade bort, tror det borde fixa problemet. Det funkade fint,hade för mej jag provade det.Uppdatering vill inte fungera
Jag försöker uppdatera databasen, men den blir inte uppdaterad! Det är samma värden hela tiden, jag får dock fram "Posten är uppdaterad"
<code>
public customers cust;
protected void Page_Load(object sender, EventArgs e)
{
if (!User.Identity.IsAuthenticated)
{
Response.Redirect("~/logIn.aspx");
}
else
{
Session["myUser"] = User.Identity.Name.ToString();
customersDB custDB = new customersDB();
cust = custDB.GetCustomerInfo(User.Identity.Name);
txtFName.Text = cust.FName;
txtLName.Text = cust.LName;
txtAddress.Text = cust.Address;
txtZipCode.Text = cust.ZipCode;
txtCity.Text = cust.City;
txtPhone.Text = cust.Phone;
txtCellPhone.Text = cust.CellPhone;
txtEMail.Text = cust.Email;
rblNewsLetter.SelectedValue = cust.NewsLetter.ToString();
}
}
protected void sqlGetCustomerOrders_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.Exception != null)
{
lblOrderError.Text = e.Exception.Message.ToString();
e.Command.Dispose();
e.ExceptionHandled = true;
//lblFetchError.Visible = true;
//GridView1.Visible = false;
}
}
protected void btnUpdateAccount_Click(object sender, EventArgs e)
{
//customers cust = new customers();
customersDB custDB = new customersDB();
cust.UserName = User.Identity.Name;
cust.FName = txtFName.Text;
cust.LName = txtLName.Text;
cust.Address = txtAddress.Text;
cust.ZipCode = txtZipCode.Text;
cust.City = txtCity.Text;
cust.Phone = txtPhone.Text;
cust.CellPhone = txtCellPhone.Text;
cust.Email = txtEMail.Text;
cust.NewsLetter = bool.Parse(rblNewsLetter.SelectedValue.ToString());
try
{
custDB.UpdateCustomer(cust);
lblError.Text = "Posten är uppdaterad!";
}
catch (Exception ex)
{
lblError.Text = ex.Message;
}
}
</code>Sv:Uppdatering vill inte fungera
<code>
public void UpdateCustomer(customers customer)
{
SqlConnection conn = new SqlConnection(printConnection);
SqlCommand cmd = new SqlCommand("updateCustomer", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@userName", SqlDbType.VarChar, 256));
cmd.Parameters["@userName"].Value = customer.UserName;
cmd.Parameters.Add(new SqlParameter("@fName", SqlDbType.VarChar, 20));
cmd.Parameters["@fName"].Value = customer.FName;
cmd.Parameters.Add(new SqlParameter("@lName", SqlDbType.VarChar, 20));
cmd.Parameters["@lName"].Value = customer.LName;
cmd.Parameters.Add(new SqlParameter("@address", SqlDbType.VarChar, 30));
cmd.Parameters["@address"].Value = customer.Address;
cmd.Parameters.Add(new SqlParameter("@zipCode", SqlDbType.VarChar, 6));
cmd.Parameters["@zipCode"].Value = customer.ZipCode;
cmd.Parameters.Add(new SqlParameter("@city", SqlDbType.VarChar, 20));
cmd.Parameters["@city"].Value = customer.City;
cmd.Parameters.Add(new SqlParameter("@phone", SqlDbType.VarChar, 15));
cmd.Parameters["@phone"].Value = customer.Phone;
cmd.Parameters.Add(new SqlParameter("@cellPhone", SqlDbType.VarChar, 15));
cmd.Parameters["@cellPhone"].Value = customer.CellPhone;
cmd.Parameters.Add(new SqlParameter("@news", SqlDbType.Bit));
cmd.Parameters["@news"].Value = customer.NewsLetter;
cmd.Parameters.Add(new SqlParameter("@mail", SqlDbType.VarChar,256));
cmd.Parameters["@mail"].Value = customer.Email;
try
{
conn.Open();
cmd.ExecuteReader();
}
catch (Exception err)
{
throw new Exception(err.Message);
}
finally
{
conn.Close();
}
}
</code>
SP:n ser ut så här:
<code>
ALTER PROC updateCustomer
@userName VARCHAR(256),
@fName VARCHAR(20),
@lName VARCHAR(20),
@address VARCHAR(20),
@zipCode VARCHAR(6),
@city VARCHAR(30),
@phone VARCHAR(20),
@cellphone VARCHAR(20),
@mail VARCHAR(150),
@news BIT
AS
SET NOCOUNT ON
DECLARE @errMess VARCHAR(100)
DECLARE @userID UNIQUEIDENTIFIER
BEGIN TRAN
SELECT @userID = userID FROM aspnet_users WHERE username =@username
UPDATE customers
SET fName = @fName,
lName = @lName,
address = @address,
zipCode = @zipCode,
city = @city,
phone = @phone,
cellPhone = @cellPhone,
newsLetter = @news
WHERE userName = @userName
IF(@@error <> 0)GOTO noUpdate
ELSE BEGIN
UPDATE aspnet_membership
SET Email = @mail,
LoweredEmail = Lower(@mail)
WHERE userID = @userID
IF(@@error <> 0)GOTO noUpdate
ELSE COMMIT TRAN
END
noUpdate:
IF(@@error <> 0)BEGIN
SET @errMess = 'Det gick inte att uppdatera posten, var god försök igen eller kontakta supporten.'
RAISERROR(@errMess, 16, 1)
ROLLBACK TRAN
RETURN
END
</code>Sv: Uppdatering vill inte fungera
Jaghar gjort en nästan likadan app innan och den fungerar som det är tänkt.Sv:Uppdatering vill inte fungera
/JohanSv: Uppdatering vill inte fungera
Nu fungerar det i alla fall, tackar för hjälpen:)