2015-07-09 7 views
1

Это форма для поддержки пользовательских привилегий в приложении на основе MySQL. Каждый пользователь имеет атрибуты, например. имя, должность, дату ввода и т. д., а также права доступа к трем областям приложения: «обслуживание пользователей», «обслуживание поставщиков» и «администрирование заказов». Доступные привилегии могут быть «без доступа», «только для чтения», «изменять». Они хранятся в объекте «Словарь».vb .NET ComboBox, заполненный словарем, хранящим значение из набора данных

В форме есть ComboBoxes для каждой области приложения, где должна быть назначена привилегия доступа. Текущие права доступа находятся в записи пользователя в таблице базы данных.

Вот код:

Public Class _000Test 

Private Enum AccessPrivilege 
    no_access = 0 
    read_only = 1 
    modify = 2 
End Enum 

Private AccessList As New Dictionary(Of Integer, String) From _ 
    {{AccessPrivilege.no_access, "kein Zutritt"}, _ 
    {AccessPrivilege.read_only, "darf lesen"}, _ 
    {AccessPrivilege.modify, "darf bearbeiten"}} 

Private Sub _000Test_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    OrderAdminComboBox.DataSource = New BindingSource(AccessList, Nothing) 
    OrderAdminComboBox.ValueMember = "Key" 
    OrderAdminComboBox.DisplayMember = "Value" 
    OrderAdminComboBox.DataBindings _ 
     .Add(New System.Windows.Forms.Binding("SelectedValue", UserBindingSource, "OrderAdmin", True)) 

    SupplierAdminComboBox.DataSource = New BindingSource(AccessList, Nothing) 
    SupplierMaintComboBox.ValueMember = "Key" 
    SupplierMaintComboBox.DisplayMember = "Value" 
    SupplierMaintComboBox.DataBindings _ 
     .Add(New System.Windows.Forms.Binding("SelectedValue", UserBindingSource, "SupplierMaint", False)) 

    OrderAdminComboBox.DataSource = New BindingSource(AccessList, Nothing) 
    OrderAdminComboBox.ValueMember = "Key" 
    OrderAdminComboBox.DisplayMember = "Value" 
    OrderAdminComboBox.DataBindings _ 
     .Add(New System.Windows.Forms.Binding("SelectedValue", UserBindingSource, "OrderAdmin", True)) 

    Me.UserTableAdapter.Fill(Me.Bringadb_AppDS.User) 

End Sub 

У меня есть проблема в том, что ComboBoxes не работают. Независимо от того, какие значения в записи базы данных в таблице будут отображаться в поле со списком 0 - «без доступа». У меня также были значения привилегий доступа в таблице и установить для него свойство DataSource - тот же результат.

Любые подсказки? Заранее спасибо.

+0

Sorry: WinForms –

+0

Показать, что 'UserBindingSource' есть. Seem slike Binding не может найти значение 'OrderAdmin' в DataSource ComboBox – Fabio

+0

Мне нужно перевести всю соответствующую информацию с немецкого на английский, так кратко: UserBindingSource - это System.Windows.Forms.BindingSource с DataSource, установленным в ProjectDatasource (т. Е. весь dabase) и DataMember, установленный в таблицу с именем Users. Таблица среди других содержит поле SByte для каждой привилегии доступа, поэтому для OrderAdmin. В MySQL Workbench поле OrderAdmin имеет значение 2, то есть modif-access. –

ответ

1

Я думаю, что преобразование из базы данных типа SByte в Integer (Int32) терпит неудачу.
Попробуйте добавить форматирование привязки объекта и использовать Convert.ToInt32(value) метод для преобразования Int32

OrderAdminComboBox.DataSource = New BindingSource(AccessList, Nothing) 
OrderAdminComboBox.ValueMember = "Key" 
OrderAdminComboBox.DisplayMember = "Value" 

'Create binding object with Format event handler 
Dim bindAccess As New Binding("SelectedValue", UserBindingSource, "OrderAdmin") 
AddHandler bindAccess.Format, Sub(sender, e) e.Value = Convert.ToInt32(e.Value)) 

OrderAdminComboBox.DataBindings.Add(bindAccess) 
+0

Danke Fabio! Войны Das !! Nach zwei Tagen herumprobieren funzt plötzlich alles ganz geschmeidig! Ein tolles Gefühl. Danke nochmals, leider habe ich noch zuwenig Irgendwas, darf также умирает Antwort nicht als Antwort markieren. Bitte macht das jemand für mich. –

+0

Извините, неверный язык (был довольно длинный день ...): Спасибо, Фабио! Через два дня все вокруг работает отлично! Мне не хватает чего-то, чтобы отметить ответ Фабио как правильный ответ, так может ли кто-нибудь сделать это для меня? Спасибо. –

Смежные вопросы