Dodanie danych z procedury składowej do Combobox

0

Witam,

Mam stworzoną procedurę składową która po podania 3 parametrów powinna zwrócić odpowiednie dane. Na serwerze tak się dzieje, jednak kiedy chcę zrobić egzekucję tejże prodecudy w mojej aplikacji, Combobox nadal jest pusty. Używam modelu MVVM i wiąże Comboboxa z procedurą w moim ViewModel. Stored Procedure zaimportowany jest przez Entity Framework. Tak to wygląda - klasa sp po zaimportowaniu:

Imports System
Imports System.Collections.Generic

Partial Public Class sp_Grab_Activities_Result
    Public Property FirstActivity As String
    Public Property SecondActivity As String
    Public Property BlockAct As Nullable(Of Boolean)

End Class 

VIewModel:

    Public Class EmployeeViewModel
        Inherits NotifyPropertyChanged

        Dim mw As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
        Private _MRU As String = "D236-ES DHL-EMEA"
        Private _MAR As String = "BPA (DHL)"
        Private _TOW As String = "Support Functions"
        Private _First As New CustomObservableCollection(Of sp_Grab_Activities_Result)
        Private _Employee As EmployeeViewModel
        Private _selectedFirst As sp_Grab_Activities_Result


        Public Property EmplView() As EmployeeViewModel
            Get
                Return _Employee
            End Get
            Set(value As EmployeeViewModel)
                _Employee = value
                OnPropertyChanged("EmplView")
            End Set
        End Property

        Public Property MRU() As string
            Get
                Return _MRU
            End Get
            Set(value As String)
                _MRU = value
                OnPropertyChanged("MRU")
            End Set
        End Property

        Public Property MAR() As String
            Get
                Return _MAR
            End Get
            Set(value As String)
                _MAR = value
                OnPropertyChanged("MAR")
            End Set
        End Property

        Public Property TOW() As String
            Get
                Return _TOW
            End Get
            Set(value As String)
                _TOW = value
                OnPropertyChanged("TOW")
            End Set
        End Property

        Public Property First() As CustomObservableCollection(Of sp_Grab_Activities_Result)
            Get
                Return _First
            End Get
            Set(value As CustomObservableCollection(Of sp_Grab_Activities_Result))
                _First = value
                OnPropertyChanged("First")
            End Set
        End Property

        Public Property SelectedFirst() As sp_Grab_Activities_Result
            Get
                Return _selectedFirst
            End Get
            Set(value As sp_Grab_Activities_Result)
                _selectedFirst = value
                OnPropertyChanged("SelectedFirst")
            End Set
        End Property

        Public Sub FillFirstActivity()
            Using context As New TimerConn
                Dim sql As String = "sp_Grab_Activities @MRU, @Market, @Tower"
                Dim param1 As New SqlParameter("@MRU", MRU())
                Dim param2 As New SqlParameter("@Market", MAR())
                Dim param3 As New SqlParameter("@Tower", TOW())
                Dim result = context.Database.SqlQuery(Of sp_Grab_Activities_Result)(sql, param1, param2, param3).FirstOrDefault
                _First.Add(result)
            End Using
        End Sub 

I XAML:

<ComboBox ItemsSource="{Binding First}" SelectedItem="{Binding SelectedFirst}"/>

Niestety, nic sie nie wyświetla... Nie wiem, gdzie może być problem.
Bardzo dziękuję za wsparcie.

0

Na początek daj First.Add(result)
I nie potrzebny Ci jest OnPropertyChanged na ObservableCollection

0

Już to robiłem. W comboboxie pokazuje się jedynie:

dfa03a637a.png

0

No i to jest to. A że nie określiłeś w comboboxie co ma wyświetlać to automatycznie wywołuje metodę ToString na twoim sp_Grab_Activities_Result, tak btw to jest głupia nazwa klasy.
Dodaj do ComboBoxa na przykład

DisplayMemberPath="FirstActivity" 
0

Dzięki! wszystko już działa. Co do nazwy, może i głupia, ale zmienić jej nie mogę ;/

Jeszcze raz dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1