Я новичок в 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();
}
}
}