Вставляя новую запись в базу данных, она обновляет старую запись в виде сетки - PullRequest
0 голосов
/ 29 апреля 2019

Просмотр сетки обновляет старую запись, когда я пытаюсь добавить новую запись.

В виде сетки у меня есть опция редактирования.Если я нажму на правку, то определенная строка будет редактировать экран и заполнять текстовые поля и обновляться, как ожидается.При нажатии кнопки «Добавить новую запись» в виде сетки будет добавлен экран с пустыми текстовыми полями, как и ожидалось, но если я добавлю новую запись, она обновит предыдущую запись, которая была отредактирована.

protected void GV_PRIOR_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
    int pid = Convert.ToInt32(GV_PRIOR.DataKeys[e.NewSelectedIndex].Value);
    DataTable dt = bll.editprior(pid);
    foreach (DataRow dr in dt.Rows)
    {
        HiddenField1.Value = dr["P_ID"].ToString();
        tb_prioname.Text = dr["P_NAME"].ToString();
        chk_actprior.Checked = dr["P_ACTIVE"].ToString() == "Y";
    }
    btn_savprior.Text = "UPDATE";                
}

protected void btn_savprior_Click(object sender, EventArgs e)
{
    if (HiddenField1.Value == "")
    {
        bll.savprior(0, tb_prioname.Text, Convert.ToBoolean(chk_actprior.Checked));
        Response.Write("<script>alert('Priority Saved Successfully')</script>");

    }
    else
    {
        bll.savprior(Convert.ToInt16(HiddenField1.Value), tb_prioname.Text, Convert.ToBoolean(chk_actprior.Checked));
        Response.Write("<script>alert('Priority Updated Successfully')</script>");
    }
    bindgrid();              
}

Если я нажимаю кнопку «Добавить новую запись», после заполнения текстовых полей она должна добавить новую запись, но она обновляет старую запись, которая была отредактирована непосредственно перед добавлением новой записи.

Stored Procedure:

    ALTER PROC [dbo].[SAVEPRIOR]
  @P_ID int,
  @P_NAME varchar(20),
  @P_ACTIVE char(1)
  AS
  BEGIN
  IF(@P_ID=0)     
  BEGIN
  INSERT INTO PRIORITY(P_NAME) VALUES (@P_NAME)
  END   
  ELSE  
  BEGIN
  UPDATE PRIORITY SET P_NAME=@P_NAME,P_ACTIVE=@P_ACTIVE WHERE P_ID=@P_ID
  END
  END

DAL:

public void savePRIOR(int id, string priorname, bool actv )
    {
        SqlCommand cmd = new SqlCommand("SAVEPRIOR", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@P_ID", id);
        cmd.Parameters.AddWithValue("@P_NAME", priorname);
        cmd.Parameters.AddWithValue("@P_ACTIVE", (actv) ? "Y" : "N");            
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }

BAL:

 public void savprior(int id, string priorname, bool actv )
    {
        dll.savePRIOR(id, priorname, actv);
    } 

1 Ответ

0 голосов
/ 29 апреля 2019

Попробуйте очистить HiddenField1.Value = ""; перед привязкой ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...