Команда обновления SQL выполнена, но без изменений в базе данных

Я совершенно новичок в технологии ASP.NET и наткнулся на специфическую проблему с моим приложением. Я пытаюсь обновить столбец логической базы данных, чтобы установить значение True (1) всякий раз, когда пользователь нажимает кнопку в строках данных RadGridView. Кнопка работает нормально, поскольку не было ошибок или исключений, однако столбец базы данных вообще не обновлялся.

Вот фрагмент моего кода:

ASPX:

<telerik:GridButtonColumn ButtonType="PushButton" ConfirmTextFields="TrxId" 
                    ConfirmTextFormatString="Are you sure you want to release Order No. {0}?" 
                    CommandName="btnRelease" Text="Release Order">
                </telerik:GridButtonColumn>

C#:

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName == "btnRelease")
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ZEUS"].ConnectionString);

            con.Open();
            SqlCommand command = new SqlCommand("UPDATE [TransactsData] SET [IsReleased] = 1, [TimeReleased] = GETDATE() WHERE [TrxId] = @TrxId", con);
            command.Parameters.AddWithValue("@TrxId", SqlDbType.BigInt);
            command.ExecuteNonQuery();
            con.Close();
        } 
    }

заранее спасибо.

2 ответа

Решение

Попробуй это:

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
    if (e.CommandName == "btnRelease")
    {
        GridDataItem item = (GridDataItem)e.Item; 

        // Replace "TrxId" with the reference to the item containing your TrxId
        string TrxId = item["TrxId"].Text;

        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ZEUS"].ConnectionString);

        con.Open();
        SqlCommand command = new SqlCommand("UPDATE [TransactsData] SET [IsReleased] = 1, [TimeReleased] = GETDATE() WHERE [TrxId] = @TrxId", con);
        command.Parameters.AddWithValue("@TrxId", TrxId);
        command.ExecuteNonQuery();
        con.Close();
    } 
}

Кстати, я полагаю, у вас есть что-то подобное в вашей RadGrid:

<telerik:GridBoundColumn DataField="TrxId" HeaderText="Transaction ID" UniqueName="TrxId"> 

Попробуй вот так. я думаю, что вы пропустили значение @TrxId

var TrxId = 10;//The value of @TrxId parameter
command.Parameters.Add(new SqlParameter("@TrxId",TrxId));

Или вот так

var TrxId = 10;//The value of @TrxId parameter
command.Parameters.AddWithValue("@TrxId",TrxId);
Другие вопросы по тегам