Отчеты об обновлении параметров asp.net 1 строка обновлена, но данные в таблице не добавлены - PullRequest
0 голосов
/ 13 октября 2011

Я получаю неправильный ответ после обновления таблицы.В моем событии RowUpdating у меня есть следующий код, который создает параметр обновления для вызова SP для обновления таблицы.Должно быть, я что-то делаю не так, но все работает нормально.Моя переменная rowActed сообщает 1 после обновления, но таблица никогда не получает данные.

Вот соответствующий код в событии RowUpdating.Значения также правильно заполнены в параметрах.

itemDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("myConnString").ToString()

itemDataSource.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure
itemDataSource.UpdateCommand = "usp_updatePTT"                 ' Call stored procedure

    'Establishes value of Primary key and String sent to SP 
    itemDataSource.UpdateParameters.Add("ID", updateKey)
    itemDataSource.UpdateParameters.Add("lang_String", updateString)

    Dim rowsAffected As Integer = 0
    rowsAffected = itemDataSource.Update()

    GridView4.DataBind()

, а вот SP ....

@ID int,
@lang_String nvarchar(1000)

AS
    /* SET NOCOUNT ON */

BEGIN
   UPDATE       tblLangROOTptt
   SET                lang_String = @lang_String
   WHERE        (ID = @ID)
END

RETURN

Любые предложения будут оценены ... спасибо,

ОБНОВЛЕНИЕ: Я нашел решение, которое работает.В исходный источник данных для команды обновления мне нужно было добавить следующее ....

UpdateCommand="EXEC usp_updatePTTrootString @ID=@original_ID, @lang_String=@lang_string" >

Это, по сути, позволяет исходному источнику данных вызывать SP.Обратите внимание: что тип команды должен оставаться как TEXT, а не как хранимая процедура, как можно подумать.

Ответы [ 4 ]

0 голосов
/ 04 декабря 2012

ОБНОВЛЕНИЕ: я нашел решение, которое работает.В исходный источник данных для команды обновления мне нужно было добавить следующее ....

UpdateCommand="EXEC usp_updatePTTrootString @ID=@original_ID, @lang_String=@lang_string" >

Это, по сути, позволяет исходному источнику данных вызывать SP.Обратите внимание: что тип команды должен оставаться как ТЕКСТ, а не как хранимая процедура, как можно подумать.

0 голосов
/ 13 октября 2011

Возможно ли, что вы обновляете таблицу уже имеющимся значением?

0 голосов
/ 13 октября 2011

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

Если вы находитесь в row_Updated, это означает, что ваш источник данных SQL уже находится в процессеобновленный, поэтому вы вызываете отдельное обновление до завершения предыдущего набора обновлений (вы находитесь только в строке, и я предполагаю, что есть несколько строк).

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

Я бы предложил использовать отдельный источник данных для вторичного обновления.Например:

Sub MyGridView_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
    Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("myConnString").ToString())
    Dim cmd As New SqlCommand("usp_updatePPT")
    cmd.Connection = conn
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.AddWithValue("@ID", updateKey)
    cmd.Parameters.AddWithValue("@lang_string", updateString)
    Try
        conn.Open()
        Dim rdr As SqlDataReader = cmd.ExecuteReader()
        Dim dt As New DataTable()
        dt.Load(rdr, LoadOption.Upsert)
        conn.Close()
    Catch ex As Exception
        If conn.State > 0 Then
            conn.Close()
        End If
        'TODO: Your error handling logic here
    End Try
End Sub

Что касается повторного обновления GridView, просто обновите страницу (если только вы не хотите существенно изменить поток кода).

0 голосов
/ 13 октября 2011

Похоже, что вы заново связываете таблицу с предварительно обновленными значениями таблицы.Возможно, вам придется вызвать оператор выбора, который получает значения данных, отправленных в сетку данных.

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