Почему моя SQL хранимая процедура обновления сервера не обновляет мою сетку? - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в C#, так что будьте любезны. Я делаю проект, в котором хочу создать сетку, которая будет отображать записи, которые вы можете искать, вставлять, обновлять, отменять и редактировать. Кнопки поиска, отмены и редактирования завершены. Прямо сейчас я борюсь с обновлением.

Я создал SQL серверную хранимую процедуру:

ALTER PROCEDURE [dbo].[_sp_Update]
    @UserNumId int, 
    @UserName nvarchar,
    @UserNumber nvarchar,
    @StartDate date,
    @EndDate date
AS
BEGIN
    UPDATE USER_NUMBERS 
    SET UserName = @UserName, 
        UserNumber = @UserNumber, 
        StartDate = @StartDate,
        EndDate =  @EndDate
    WHERE UserNumId = @UserNumId
END

Затем я создал функциональность обновления, которая не работает. Я нажимаю кнопку обновления, и происходит то, что в записи отсутствуют символы в базе данных, и она вообще не обновляется.

Я часами занимаюсь исследованием, и я понятия не имею, что делать.

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    try
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();

            SqlCommand cmd_update = new SqlCommand("_sp_Update", con);
            cmd_update.CommandType = CommandType.StoredProcedure;

            cmd_update.Parameters.AddWithValue("@UserNumId", (GridView1.DataKeys[e.RowIndex].Value.ToString()));
            cmd_update.Parameters.AddWithValue("@UserName", (GridView1.Rows[e.RowIndex].FindControl("txtUserName") as TextBox).Text.Trim());
            cmd_update.Parameters.AddWithValue("@UserNumber", (GridView1.Rows[e.RowIndex].FindControl("txtUserNumber") as TextBox).Text.Trim());
            cmd_update.Parameters.AddWithValue("@StartDate", (GridView1.Rows[e.RowIndex].FindControl("txtStartDate") as TextBox).Text.Trim());
            cmd_update.Parameters.AddWithValue("@EndDate", (GridView1.Rows[e.RowIndex].FindControl("txtEndDate") as TextBox).Text.Trim());

            cmd_update.ExecuteNonQuery();

            GridView1.EditIndex = -1;

            PopulateGridview();

            con.Close();
        }
    }
    catch (Exception ex)
    {
        lblSuccessMessage.Text = "";
        lblErrorMessage.Text = ex.Message;
    }
}

******* Я ОБНОВИЛ КОД ДО ЭТОГО - ТЕПЕРЬ НИЧЕГО НЕ ОБНОВЛЯЕТСЯ И Я ПОЛУЧАЮ СООБЩЕНИЕ ОБ ОШИБКЕ. Объект должен реализовывать IConvertible.

 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

{
    using (SqlConnection con = new SqlConnection(connectionString))

        {

            con.Open();

            Label UserNumID = 
GridView1.Rows[e.RowIndex].FindControl("lbl_UserNumID") as Label;
            TextBox UserName = 
GridView1.Rows[e.RowIndex].FindControl("txtUserName") as TextBox;
            TextBox UserNumber = 
GridView1.Rows[e.RowIndex].FindControl("txtUserNumber") as TextBox;
            TextBox StartDate = 
GridView1.Rows[e.RowIndex].FindControl("txtStartDate") as TextBox;
            TextBox EndDate = 
 GridView1.Rows[e.RowIndex].FindControl("txtEndDate") as TextBox;

            SqlCommand cmd_update = new SqlCommand("_sp_Update", con);
            cmd_update.CommandType = CommandType.StoredProcedure;

            cmd_update.Parameters.Add("@UserNumId", 
SqlDbType.Int).Value=UserNumID;
            cmd_update.Parameters.Add("@UserName", 
SqlDbType.VarChar).Value=UserName;
            cmd_update.Parameters.Add("@UserNumber", 
SqlDbType.VarChar).Value=UserNumber;
            cmd_update.Parameters.Add("@StartDate", 
SqlDbType.Date).Value=StartDate;
            cmd_update.Parameters.Add("@EndDate", 
 SqlDbType.Date).Value=EndDate;

            cmd_update.ExecuteNonQuery();


            GridView1.EditIndex = -1;

            PopulateGridview();

            con.Close();

    }

        }
}
...