0

データベースから取得した値が入力されたフォームがあります。そのフォームには送信ボタンがあり、クリックするとデータベース内の対応するフィールドが更新されます。

問題は、何をしてもデータベースで値が更新されないことです。私はストアドプロシージャを使用していて、2回チェックしましたが、問題なく動作しました。また、ハードコードされた挿入値を使用してトリックを試しました。これも機能します。

私の推測では、フィールドが Page_Load でデータベースから取り込まれると、変更してもその値はそのまま残ります。この問題を解決して、同じフォームを使用してデータを取得および更新できるようにするにはどうすればよいですか?

 protected void Page_Load(object sender, EventArgs e)
    {
        lblMsg.Visible = false;

        string bookingid = Request.QueryString["bookingid"];
        Booking b = BookingAccess.GetBooking(Int32.Parse(bookingid));
        if (b != null)
        {
            var start_date_formatted = ((DateTime)b.StartDate).ToString("dd-MM-yyyy");
            var end_date_formatted = ((DateTime)b.EndDate).ToString("dd-MM-yyyy");

            pet_name.Text = b.PetName;
            species.Text = b.Species;
            start_date.Text = start_date_formatted;
            end_date.Text = end_date_formatted;
        }


    }

    protected void btnEditBooking_Click(object sender, EventArgs e)
    {
        string bookingid_raw = Request.QueryString["bookingid"];
        int bookingid = int.Parse(bookingid_raw);

        var start_date_formatted = DateTime.ParseExact(start_date.Text, "dd-MM-yyyy", null);
        var end_date_formatted = DateTime.ParseExact(end_date.Text, "dd-MM-yyyy", null);

        string pet_name = "a";
        string species = "b";
        lblMsg.Visible = true;
        string msg = BookingAccess.UpdateBooking(bookingid, pet_name, species, start_date_formatted, end_date_formatted);
        if (msg == null)
            lblMsg.Text = "Updated booking details successfully!";
        else
            lblMsg.Text = "Error -> " + msg;
    }
4

1 に答える 1

1

関数にデータをロードする場合は、ユーザーがページを送信したときにデータがリセットされないようにPage_Loadチェックしていることを確認してください。IsPostBack

private void Page_Load()
{
    if (!IsPostBack)
    {
        // Load the data from database
    } else {
        // Validate the data and save to database
    }
}
于 2012-11-23T02:19:09.043 に答える