Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Xử lý biến trên form update trong lập trình ASP.NET

    Hi.
    Mình tạo 1 trang web trong đó có phần edit thông tin của defect, khi load trang web thì lấy dữ liệu sẵn có của defect đổ vào những control trong form, sau đó chỉnh sửa trên form rồi update lại vào database.


    Mã:
        SqlConnection con = new SqlConnection("server=.;database=DefectTrackingSystem;uid=sa;pwd=KimLien");    SqlDataAdapter adapt;    ws.WebService ww = new ws.WebService();    protected void Page_Load(object sender, EventArgs e)    {        Label1.Text = Session["DefID"].ToString();        int id = int.Parse(Session["DefID"].ToString());                // Load dữ liệu lên các control         if (con.State == ConnectionState.Closed) con.Open();        adapt = new SqlDataAdapter("select * from Defect where DefectID ='" + id + "'", con);        DataSet ds = new DataSet();        adapt.Fill(ds);        DataTable dt = ds.Tables["Defect"];        foreach (DataRow row in ds.Tables[0].Rows)        {            txtTitle.Text = row["DefectName"].ToString();            ddlComp.SelectedValue = row["CompID"].ToString();            ddlSeve.SelectedValue = row["SeverityID"].ToString();            ddlPrio.SelectedValue = row["Priority"].ToString();            rbPlatform.SelectedValue = row["Platform"].ToString();            ddlDiag.SelectedValue = row["DiagnosisID"].ToString();            txtDescription.Text = row["Description"].ToString();            txtResolution.Text = row["Resolution"].ToString();            ddlStatus.SelectedValue = row["StatusID"].ToString();            ddlAssign.SelectedValue = row["Assigned"].ToString();        }        con.Close();    }    protected void btnEdit_Click(object sender, EventArgs e)    {        if ((txtTitle.Text == "") || (txtDescription.Text == "") || (txtResolution.Text == ""))        {            Alert.Show("Some field has been left blank !");        }        else        {            // Update dùng web service            bool check = ww.EditDefect(int.Parse(Session["DefID"].ToString()), txtTitle.Text, int.Parse(ddlSeve.SelectedItem.Value), int.Parse(ddlComp.SelectedItem.Value), rbPlatform.SelectedItem.Text, txtDescription.Text, int.Parse(ddlDiag.SelectedValue), int.Parse(ddlAssign.SelectedItem.Value), int.Parse(Session["ID"].ToString()), int.Parse(ddlStatus.SelectedItem.Value), txtResolution.Text, int.Parse(ddlPrio.SelectedItem.Value));            if (check == false)            {                Alert.Show("Edit failed ! Please try again");            }            else            {                Response.Redirect("~/UserPage/Home.aspx");            }        }    }
    Khi mình edit dữ liệu thì có vẻ như nó không lấy biến mà mình đã chỉnh sửa trên form mà lấy những gì mình đã load lên rồi update lại. Ví dụ như dòng này :
    txtTitle.Text = row["DefectName"].ToString();
    Mình xóa trắng luôn rồi save mà nó vẫn lưu giá trị như cũ.
    Vấn đề mười mươi là nằm ngay chỗ page load vì mình disable đoạn code đó đi thì save ngon lành.
    Nhờ các bạn góp ý xem xử lý chỗ này thế nào, hoặc có cách nào để load dữ liệu hay hơn không [IMG]images/smilies/biggrin.png[/IMG]

    Thanks...

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Theo mình bạn nên tách đoạn mã load vào một hàm riêng,khi nào update thì gọi hàm load
    if(!IsPostBack()){
    LoadData();
    }

    Việc không update được là do mỗi khi edit nó chạy vào page_load trước rồi mới tới sự kiện btn_edit của bạn

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •