powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Привязка данных через запрос
17 сообщений из 17, страница 1 из 1
Привязка данных через запрос
    #38947392
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При загрузке формы создаю запрос и привязку данных:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim per As IList
Public Sub New(ByVal id As String)
	InitializeComponent()
	person_id = id
	per = (From x In db.persons Where x.Key = person_id Select x.Value.surname).ToList
End Sub

Private Sub frm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.surname.DataBindings.Add(New Binding("Text", per, "surname"))
End Sub



Данные привязаны к нужной записи. Всё ОК.
Для выбора другой записи выполняю запрос с нужным id, но привязка не меняется.
Что не так?
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38947402
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_NewПри загрузке формы создаю запрос и привязку данных:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim per As IList
Public Sub New(ByVal id As String)
	InitializeComponent()
	person_id = id
	per = (From x In db.persons Where x.Key = person_id Select x.Value.surname).ToList
End Sub

Private Sub frm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.surname.DataBindings.Add(New Binding("Text", per, "surname"))
End Sub



Данные привязаны к нужной записи. Всё ОК.
Для выбора другой записи выполняю запрос с нужным id, но привязка не меняется.
Что не так?
Где и как выполняется с нужным id?
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38947407
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,
Например, выполняю процедуру:
Код: vbnet
1.
2.
3.
Private Sub GetData(id)
    per = (From x In db.persons Where x.Key = id Select x.Value.surname).ToList
End Sub
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38947409
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На той же форме, по клику на кнопке.
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38948084
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя запрос возвращает нужные данные, Binding элемента не изменяется.
Неужели придётся каждый раз удалять и вновь создавать привязку?
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38948260
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_New,

А с чего у вас привязка то будет меняться? Вы в методе GetData просто присваиваете ссылочной переменной per ссылку на новый объект списка. В то же время Me.surname.DataBindings у вас по прежнему ссылка на старый объект списка.
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38948541
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStone,
Если использовать таблицы и DataView, то изменяя фильтр у последнего по нужному id и не менять привязку, то все работает.
Аналогично хотел сделать так же.
Как правильно сделать привязку в моём случае?
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38948588
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_New,
Создай поле типа Binding и инициализируй его DataSource всякий раз, вместо
per = .....
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38948594
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,
поясните, пжл, примером.
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38969372
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и не смог разобраться, как обновлять Binding.
Приходится каждый раз очищать Binding:
Код: vbnet
1.
2.
3.
4.
5.
Private Sub GetData(id)
    per = (From x In db.persons Where x.Key = id Select x.Value.surname).ToList
    surname.DataBindings.Clear()
    surname.DataBindings.Add(New Binding("Text", per, "surname"))
End Sub


Прошу помочь!
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38969556
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Писать в sub new код, способный произвести ошибку и не писать обработчик - это ахтунг.
Студия в таких случаях выдает довольно невнятное описание, не сразу и догадаешься, что проблема в new.

Sergey_New Прошу помочь!Попробуй ObservableCollection вместо IList.
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38969590
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariySergey_New Прошу помочь!Попробуй ObservableCollection вместо IList.
В винформс для этого обычно используют BindingList<T> + BindingSource
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38969672
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
т.е. Вы предлагаете создать еще один список из имеющегося db.persons, поддерживающий привязку. Но это более затратно, чем использованное решение. Так же у BindingList нет источника данных, только метод Add. При каждом изменении db.persons будет нужно изменять BindingList?
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38969738
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_NewСон Веры Павловны,
т.е. Вы предлагаете создать еще один список из имеющегося db.persons, поддерживающий привязку. Но это более затратно, чем использованное решение. Так же у BindingList нет источника данных, только метод Add. При каждом изменении db.persons будет нужно изменять BindingList?
Да. Antionary предлагает то же самое, только в виде другой коллекции. Ваш список не поддерживает оповещений об изменениях, объекты в списке не реализуют INotifyPrtopertyChanged - а биндинги работают именно с этими оповещениями.
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38969746
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_NewНо это более затратно, чем использованное решение.ну, тут уж нужно выбирать - либо обновление привязки, либо экономия на спичках.
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38969778
Sergey_New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за помощь!
...
Рейтинг: 0 / 0
Привязка данных через запрос
    #38970318
zz118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страх, извините, какой-то. Есть отличная событийная модель обновления данных. Нет, мы на каждый чих будем пересоздавать биндинги, а потом удивляться, что все тормозит и хромает на 4 ноги.
Если у ТС еще не пропало желание разобраться, я бы посоветовал сходить вот сюда:
INotifyPropertyChanged https://msdn.microsoft.com/ru-ru/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx

а потом вот сюда:
http://stackoverflow.com/questions/2820447/net-winforms-inotifypropertychanged-updates-all-bindings-when-one-is-changed-b
http://stackoverflow.com/questions/19467614/two-way-databinding-in-winforms-inotifypropertychanged-implemented-in-base-clas
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Привязка данных через запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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