набор данных в веб-сервисе - PullRequest
       17

набор данных в веб-сервисе

0 голосов
/ 18 февраля 2010

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

Это таблица ID (PK, int, не ноль) Имя (nvarchar 100, null)

Это код для клиентской стороны:

Public Sub Refresh()
    Dim p As localhost.Service1 = New localhost.Service1
   'bind datatable to UltraGrid 
    UltraGrid1.DataSource = p.GetData()
    End Sub

Это код веб-службы для получения данных из таблицы:

<WebMethod()> Public Function GetData() As DataSet
    Dim custDA As SqlDataAdapter = New SqlDataAdapter("SELECT  ID,Name FROM Btable", nwindConn)
    Dim custDS As DataSet = New DataSet()
    custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
    custDA.Fill(custDS, "Btable")
    GetData= custDS
End Function

Это все работает нормально, но теперь я хочу вставить новую строку в сетку, отправить ее в веб-сервис и вставить ее оттуда. Как я могу это сделать? Спасибо!

1 Ответ

1 голос
/ 18 февраля 2010

Вы должны обработать событие "AfterRowInsert" UltraTable и получить значения из новой строки. Затем вы можете вызвать новый веб-метод в вашем веб-сервисе, который вставит строку в вашу базу данных.

Веб-метод может выглядеть примерно так ...

<WebMethod()> Public sub AddRecord(id as integer, name as string)

dim sSql as string = "INSERT INTO Btable (ID, Name) VALUES (@ID, @Name)"    
Dim oCmd as SqlCommand = nwindConn.CreateCommand()
oCmd.CommandText = sSql
oCmd.Parameters.Add("@ID", SqlDbType.Int).Value = id
oCmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = name
oCmd.ExecuteNonQuery()

End Function 

Если в вашем столбце идентификаторов указан автоматический номер, он будет немного другим. В этом случае ваш веб-метод принимает только параметр имени и возвращает идентификатор новой записи. В MS SQL Server вы можете получить это, вызвав SCOPE_IDENTITY () после запроса INSERT.

...