Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Никак не получается обновить запись через DataSet / 14 сообщений из 14, страница 1 из 1
29.05.2003, 11:38
    #32171623
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Все делал Wizard-ами, сделал OleDbConnection, OleDbDataAdapter, DataSet
На старте заполняю DataSet
На страничке один TextBox, я его Text привязываю:
DataBinder.Eval(DataSet11, "Tables[ACCOUNTS].DefaultView.[0].ACCOUNT")
Ставлю свойство AutoPostBack, на событии TextChanged вешаю код:

Me.DataSet11.Tables("ACCOUNTS").Rows(0)("ACCOUNT") = Me.TextBox1.Text
Me.DataSet11.GetChanges(DataRowState.Modified)
Me.DataSet11.AcceptChanges()
Me.OleDbDataAdapter1.Update(Me.DataSet11, "ACCOUNTS")

И НИЧЕГО!!! Что не так? Рыскал - рыскал по Интернету, нигде толком не объяснена работа с такими вещами, только SqlData описаны, пытаюсь привернуть к OleDb - не получается.
...
Рейтинг: 0 / 0
29.05.2003, 12:02
    #32171673
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Более того, пишу прямо:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim con As New System.Data.OleDb.OleDbConnection("Provider=OraOLEDB.Oracle;Password=ownerPassword;Persist Security Info=True;User ID=schemaOwner;Data Source=oracledb.world;")
con.Open()
Dim cmd As New System.Data.OleDb.OleDbCommand("update ACCOUNTS set ACCOUNT=" + Me.TextBox1.Text + " where ACCOUNT=" + TextBox2.Text, con)
cmd.ExecuteNonQuery()
End Sub

Молча возвращает меня на страничку, премиленько заполняя ее старыми данными
...
Рейтинг: 0 / 0
29.05.2003, 12:16
    #32171697
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Еще более того!

Устанавливаю переменную сессии:
Session("recs") = cmd.ExecuteNonQuery()

И в Page_Load пишу:
Response.Write(Session("recs"))

Так он самым наглым образом пишет мне 1!!!
Так где же 1, ежели данные все те же?
...
Рейтинг: 0 / 0
29.05.2003, 12:28
    #32171715
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Ну вот, закопался я...

Забыл совсем, что в TextBox1.Text в текущий момент находятся данные, из только что прочитанные из базы, а данные, которые я ввел в форме после SubMit-а формы находятся в коллекции Request.Form.Items...

Так и заполнял поля старыми данными
...
Рейтинг: 0 / 0
29.05.2003, 12:29
    #32171717
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Ну вот и поговорил сам с собою, а отчего же не поговорить с интересным собеседником? :)
...
Рейтинг: 0 / 0
02.06.2003, 10:32
    #32173748
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
и действительно :)
...
Рейтинг: 0 / 0
03.06.2003, 12:41
    #32174998
Axl
Axl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Стандартную трассировку нужно применять, чего на вход подаешь, чего на выходе получаешь. Response.Write или Trace.Warn
...
Рейтинг: 0 / 0
05.06.2003, 10:45
    #32177090
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
А теперь кто-нить мне скажет, как выцепить измененные данные с помощью привязанного DataGrid-а?
А примеры я нашел совсем неубедительные, т.к. в них рассматриваются значения не переданные EventHandler-у, а как будто заново прочитанные.
Ситуация:
Я делаю DataGrid с возможностью Edit, заполняю его из DataSet-а
Начинаю правку данных таким образом:
Код: plaintext
1.
2.
3.
4.
    Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
        DataGrid1.EditItemIndex = e.Item.ItemIndex
        DataGrid1.DataBind()
    End Sub

Обрабатываю их обновление таким:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
        conОВФО.Open()
        Dim стрОбновление As String
        стрОбновление =  "ОТЧЕТ.О_ОВП.ОбновитьПоказатель('" + _
        CType(e.Item.Cells(0).Controls(0), TextBox).Text + "','" + _
        CType(e.Item.Cells(1).Controls(0), TextBox).Text + "',"  + _
        Replace(CType(e.Item.Cells( 2 ).Controls( 1 ), TextBox).Text,  "," ,  "." ) +  ",TO_DATE('" + _
        Me.txtDate.Text + "','DD.MM.YYYY'),'" + _
        Me.ddlBranch.SelectedItem.Value + "')" 

        Dim com As New OleDb.OleDbCommand( "begin "  + стрОбновление +  "; commit; end;" , conОВФО)
        com.ExecuteNonQuery()
        DataGrid1.EditItemIndex = - 1 
        адПоказ.Fill(dsОВП,  "ОВП_ПОКАЗ" )
        DataGrid1.DataBind()
    End Sub


Так в контролах находятся то ли старые (до правки), то ли заново прочитанные из DataSet-а данные, но не те, которые я внес.

Как быть? Как к ним доступиться?
...
Рейтинг: 0 / 0
05.06.2003, 11:53
    #32177184
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Почему MSDN не соответствует тому, что есть на самом деле?
Пришлось написать запрос типа:

Request.Form.Item("DataGrid1:ctl1:TextBox1")

Сработало, но откуда мне знать, как будет называться контрол на двенадцатой строке третьей страницы?

Подскажите, как правильно работать с DataGrid-ами
Очень хотелось бы видеть способ типа:

DataGrid1.Items(x)(y).Value

внутри события, чтобы он давал измененные значения, неужели такого нету?
Серверный ведь элемент управления... Где надо рыть?
...
Рейтинг: 0 / 0
05.06.2003, 11:58
    #32177194
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Ну вот, опять у тебя разговор сам с собой получается.

ЗЫ: Извини, сам помочь ничем не могу. :(
...
Рейтинг: 0 / 0
16.06.2003, 06:13
    #32182803
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
Отрыл собаку, оказалась в событии Page_Load.
Нельзя перезаполнять ни грид ни датасет, т.к. событие, к сожалению, отрабатывается после повторного Page_Load-а.
Ужасающая идеология... Уж если Event-based, тогда порядок обработки событий бы правильно построили, что-ли...
...
Рейтинг: 0 / 0
17.06.2003, 11:30
    #32183985
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
так они там правильно и построены -
Page_Init
Page_Load
обработка событий компонент
Page_Unload

+используем Page.IsPostBack для того, чтобы отличить 1-ую загрузку от последующих.
...
Рейтинг: 0 / 0
18.06.2003, 05:58
    #32184851
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
так они там правильно и построены -
Page_Init
Page_Load
обработка событий компонент
Page_Unload

+используем Page.IsPostBack для того, чтобы отличить 1-ую загрузку от последующих.

А где компоненты создаются? После Page_Init или перед?
А если было 2 PostBack-а? Т.е. была ошибка заполнения, обработанная на сервере и возвращенная для исправления, как тут быть?
...
Рейтинг: 0 / 0
18.06.2003, 10:10
    #32184988
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никак не получается обновить запись через DataSet
А где компоненты создаются? После Page_Init или перед?
был уверен, что во время :) но вот с удивлением прочёл статью, в которой чётко указано, что server контролы создаются во время Load:

Perform actions common to all requests, such as setting up a database query. At this point, server controls in the tree are created and initialized , the state is restored, and form controls reflect client-side data. See Handling Inherited Events.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcontrolexecutionlifecycle.asp


А если было 2 PostBack-а? Т.е. была ошибка заполнения, обработанная на сервере и возвращенная для исправления, как тут быть?

да хоть 3 постбэка - какая разница? ну была ошибка, ну вернули страницу, ну и что? юзер исправит ошибку и отошлёт её ещё раз. состояние страницы сохранится благодаря viewstate. Я тут проблемы не вижу, либо вы тут что-то недоговариваете :)
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Никак не получается обновить запись через DataSet / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]