Combobox и binding

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Combobox и binding

Сообщение Antonariy » 26.05.2010 (Ср) 16:20

Задал сабжу DataSource, DisplayMember и ValueMember, привязал к DataTable. При переходе по записям все корректно отображается, но после выбора нового значения происходит фигня: при потере фокуса Combobox возвращает старое значение. Это разве нормально? Текстбокс, например, так не делает.
Как лечить?
Лучший способ понять что-то самому — объяснить это другому.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Combobox и binding

Сообщение 1Steps » 27.05.2010 (Чт) 0:30

...при потере фокуса Combobox возвращает старое значение.
Как ты это заметил? Я такого не наблюдал.
Удалена за ненадобностью.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Combobox и binding

Сообщение Antonariy » 27.05.2010 (Чт) 10:16

Ну кагбэ глазами. В аттаче видео. Вот код:
Код: Выделить всё
    Dim dsOwnerCtlg As New DataSet
    Dim daOwnerCtlg As SqlDataAdapter

    Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        daOwnerCtlg = g_DataService.GetOwnerCtlg(TreeView1.SelectedNode.Tag)
        dsOwnerCtlg.Clear()
        daOwnerCtlg.Fill(dsOwnerCtlg)
        SetBinding(Me, dsOwnerCtlg.Tables(0))
        cmdSave.Enabled = TreeView1.SelectedNode.ImageIndex = 1
    End Sub

    Public Sub SetBinding(ByVal Form As Object, ByVal Table As DataTable)
        Dim c As Control
        For Each c In Form.Controls
            If c.Tag Is Nothing Then
                SetBinding(c, Table)
            Else
                c.DataBindings.Clear()
                Select Case c.GetType.Name
                    Case "ComboBox"
                        c.DataBindings.Add("SelectedValue", Table, c.Tag)
                    Case "TextBox"
                        c.DataBindings.Add("Text", Table, c.Tag)
                    Case Else
                        Debug.Print(c.GetType.Name)
                End Select
            End If
        Next
    End Sub
Вложения
gluk.rar
(35.35 Кб) Скачиваний: 76
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Combobox и binding

Сообщение Antonariy » 27.05.2010 (Чт) 13:45

Вот лог мониторинга SelectedIndex.

Выбираю новое значение:
SelectionChangeCommitted 3
SelectedValueChanged 3
SelectedIndexChanged 3

Покидаю комбобокс:
LostFocus 3
leave 3
Validating 3
SelectedValueChanged 4
SelectedIndexChanged 4
Validated 4

Значение меняется после Validating.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Combobox и binding

Сообщение Antonariy » 28.05.2010 (Пт) 13:47

Выяснилось, что значение в привязанном датасете не меняется при выборе нового значения. Почему это может происходить?
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList