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

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

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

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

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

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

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Refresh
    #32603197
Por
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Por
Гость
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
Refresh
    #32603244
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Por
ИМХО лучше Clear() чем создавать новый DataSet.

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

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

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

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

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

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

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

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

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

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

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


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