Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Привязка данных через запрос / 17 сообщений из 17, страница 1 из 1
28.04.2015, 15:04
    #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
28.04.2015, 15:14
    #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
28.04.2015, 15:19
    #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
28.04.2015, 15:21
    #38947409
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
На той же форме, по клику на кнопке.
...
Рейтинг: 0 / 0
29.04.2015, 08:09
    #38948084
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Хотя запрос возвращает нужные данные, Binding элемента не изменяется.
Неужели придётся каждый раз удалять и вновь создавать привязку?
...
Рейтинг: 0 / 0
29.04.2015, 10:54
    #38948260
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Sergey_New,

А с чего у вас привязка то будет меняться? Вы в методе GetData просто присваиваете ссылочной переменной per ссылку на новый объект списка. В то же время Me.surname.DataBindings у вас по прежнему ссылка на старый объект списка.
...
Рейтинг: 0 / 0
29.04.2015, 13:23
    #38948541
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
JeStone,
Если использовать таблицы и DataView, то изменяя фильтр у последнего по нужному id и не менять привязку, то все работает.
Аналогично хотел сделать так же.
Как правильно сделать привязку в моём случае?
...
Рейтинг: 0 / 0
29.04.2015, 13:49
    #38948588
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Sergey_New,
Создай поле типа Binding и инициализируй его DataSource всякий раз, вместо
per = .....
...
Рейтинг: 0 / 0
29.04.2015, 13:52
    #38948594
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
ЕвгенийВ,
поясните, пжл, примером.
...
Рейтинг: 0 / 0
27.05.2015, 08:21
    #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
27.05.2015, 11:24
    #38969556
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Писать в sub new код, способный произвести ошибку и не писать обработчик - это ахтунг.
Студия в таких случаях выдает довольно невнятное описание, не сразу и догадаешься, что проблема в new.

Sergey_New Прошу помочь!Попробуй ObservableCollection вместо IList.
...
Рейтинг: 0 / 0
27.05.2015, 11:48
    #38969590
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
AntonariySergey_New Прошу помочь!Попробуй ObservableCollection вместо IList.
В винформс для этого обычно используют BindingList<T> + BindingSource
...
Рейтинг: 0 / 0
27.05.2015, 12:44
    #38969672
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Сон Веры Павловны,
т.е. Вы предлагаете создать еще один список из имеющегося db.persons, поддерживающий привязку. Но это более затратно, чем использованное решение. Так же у BindingList нет источника данных, только метод Add. При каждом изменении db.persons будет нужно изменять BindingList?
...
Рейтинг: 0 / 0
27.05.2015, 13:25
    #38969738
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Sergey_NewСон Веры Павловны,
т.е. Вы предлагаете создать еще один список из имеющегося db.persons, поддерживающий привязку. Но это более затратно, чем использованное решение. Так же у BindingList нет источника данных, только метод Add. При каждом изменении db.persons будет нужно изменять BindingList?
Да. Antionary предлагает то же самое, только в виде другой коллекции. Ваш список не поддерживает оповещений об изменениях, объекты в списке не реализуют INotifyPrtopertyChanged - а биндинги работают именно с этими оповещениями.
...
Рейтинг: 0 / 0
27.05.2015, 13:32
    #38969746
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Sergey_NewНо это более затратно, чем использованное решение.ну, тут уж нужно выбирать - либо обновление привязки, либо экономия на спичках.
...
Рейтинг: 0 / 0
27.05.2015, 14:01
    #38969778
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязка данных через запрос
Спасибо всем за помощь!
...
Рейтинг: 0 / 0
28.05.2015, 08:09
    #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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Привязка данных через запрос / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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