Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Refresh / 18 сообщений из 18, страница 1 из 1
13.07.2004, 16:40
    #32602271
Paul Chabinsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Как перезагрузить данные из базы в датасет не применяя метода DataSet.Clear()? Просто если убрать .Clear() то при .Merge() строки которых нет в выборке все равно остаются в DataSet-е.
...
Рейтинг: 0 / 0
13.07.2004, 20:13
    #32602729
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Пожалуй надо описать поподробнее в чем проблема т.к.
пока не уловливается связь между базой данных и методом Merge().

А лучше привидите код.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.07.2004, 10:26
    #32603127
Paul Chabinsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
В принципе .Merge() тут особо непричем...
Вот есть такой метод к примеру...

private void Refresh(TypedDataSet ds)
{
this.datAdapt.Fill(ds);
}

До выполнения метода в датасете есть 5-ть строк. .Fill() датаадаптера возвращает всего три строки, по ключам происходит обновление записей, но лишнии строчки в датасете не удалятся... их как было 5-ть так пять и останется не зависимо от того что в выборке метода .Fill() их вернулось всего три. А мне нужно не делая .Clear() удалить лишние строчки, желательно без циклов... Я просто пробовал с .Merge-ем сделать у меня не получилось...
...
Рейтинг: 0 / 0
14.07.2004, 10:40
    #32603166
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
ИМХО в таком случае без clear никак. Да и вообще обновляют DataSet из БД во избежании различных проблем (в том числе и описанной вами) всегда с использованием clear.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.07.2004, 10:40
    #32603169
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
А чем clear не устраивает?
То что теряется позиция курсора?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.07.2004, 10:53
    #32603197
Por
Por
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Paul ChabinskyДо выполнения метода в датасете есть 5-ть строк
Надеюсь имеется ввиду, что:
DataSet.Tables.Count == 1 && DataSet.Tables[0].Rows.Count == 5
тогда можно так избавиться от DataSet.Clear()

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private void Refresh(TypedDataSet ds)
{

ds = new TypedDataSet();

this.datAdapt.Fill(ds);

}
...
Рейтинг: 0 / 0
14.07.2004, 11:08
    #32603244
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
2 Por
ИМХО лучше Clear() чем создавать новый DataSet.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.07.2004, 11:19
    #32603286
Paul Chabinsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
2Sa Да меня неустраивает именно то что теряеца позиционирование строк...
...
Рейтинг: 0 / 0
14.07.2004, 12:08
    #32603472
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Имеется ввиду позиционирование на строке?
М.б. его где-то запоминать?
...
Рейтинг: 0 / 0
14.07.2004, 12:44
    #32603595
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
hDrummer
М.б. его где-то запоминать?

Да надо запоминать перед Clear().
Я уже писал здесь рецепт как это все делается. Только запоминать надо не позицию курсора, а значение первичного ключа, той записи на которой спозиционирован курсор.

2 Paul Chabinsky
Что у вас является первичным ключом?
...
Рейтинг: 0 / 0
14.07.2004, 14:41
    #32603990
Paul Chabinsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
2Sa Дело в том что у меня в датасете таблица не одна, и мне надо сохронять позиции из всех таблиц... я думал думал, как лучше такой метод написать, так и не придумал... Не получилось потому, что взять текущую строку без БиндингМанаджерБейз-а свойствами только самого датасета не зя... Вот и получается что чтоб такой метод сделать мне надо как еще и биндинги передавать в метод который делает рефрешь...
...
Рейтинг: 0 / 0
14.07.2004, 14:43
    #32604001
Paul Chabinsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Дело ведь еще и в том что иногда датамембер выглядит не как имя таблицы, а как релейшен... и чтоб мне все биндинги узнать мне нужно у формы на которой контролы лежат их спросить...
...
Рейтинг: 0 / 0
14.07.2004, 14:50
    #32604026
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Paul Chabinsky
мне надо сохронять позиции из всех таблиц... я думал думал, как лучше такой метод написать, так и не придумал... Не получилось потому, что взять текущую строку без БиндингМанаджерБейз-а свойствами только самого датасета не зя... Вот и получается что чтоб такой метод сделать мне надо как еще и биндинги передавать в метод который делает рефрешь...

Ну придется передавать биндинги думаю не проблема.

А необходимость в полном Refresh вашего датасета почему возникает? Может можно обойтись без него?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.07.2004, 17:00
    #32604509
Paul Chabinsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
2Sa полный рефреш обязателен, т.к. я хочу чтоб два пользователя могли одновременно редактировать одну и ту же детайл часть сущьности...

Я вот еще спросить хотел, Вы советуете по ключу позишн устанавливать, а если строчка с таким ключем была удаленна?

И еще, может есть возможность из самого объекта датасета получить информацию о том какие контролы к нему прибинденны и каким датамембером?
...
Рейтинг: 0 / 0
15.07.2004, 07:56
    #32605054
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Paul Chabinsky
Вы советуете по ключу позишн устанавливать, а если строчка с таким ключем была удаленна?

Если удалена то и позиционировать в таком случае не надо это мои соображения.
Хотя вы можете любую логику прописать, например позиционировать курсор на строку с ближайшим значением первичного ключа, решать вам.
Paul Chabinsky
И еще, может есть возможность из самого объекта датасета получить информацию о том какие контролы к нему прибинденны и каким датамембером?

Я такую возможность не слышал, и по определению ее быть не должно.
...
Рейтинг: 0 / 0
15.07.2004, 10:56
    #32605345
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
В данном случае выкручиваемся простой проверкой свойства Datasource у всех контролов на форме (или контролов интересуещего нас типа), благо реализуеться это в несколько строчек кода
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
15.07.2004, 11:03
    #32605365
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Ну вообще мы же знаем что на форме используем (сами ведь делаем ) ИМХО можно и у формы BindingContext спросить. Но все зависит от приложения, конкретики пока нет.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
15.07.2004, 11:06
    #32605381
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refresh
Ну я расматриваю общий случай... :)
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Refresh / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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