FinByValue не работает в контексте пользовательского элемента управления DropDownList - PullRequest
0 голосов
/ 24 марта 2011

Я вытаскиваю свои волосы с этим.

У меня есть usercontrol выпадающего списка Сотрудника (uxEmployee), и я представил метод SelectedValue как свойство (SelectedValue).страница Я пытаюсь либо установить значение на основе моих данных, либо добавить значение в список, если его там нет.

Независимо от того, что я делаю, это добавление значения Set в список.Даже когда значение уже есть в списке;это все еще добавляет ценность.В основном FindByValue всегда возвращает «Nothing», что бы я ни делал.Буду признателен за любую помощь.

    Public Property SelectedValue() As String

    Get
        Return uxEmployee.SelectedValue
    End Get

    Set(ByVal value As String)

        If Not uxEmployee.Items.FindByValue(value) Is Nothing Then
            uxEmployee.SelectedValue = value
        Else
            uxEmployee.Items.Insert(0, New ListItem(value, value))
            uxEmployee.AppendDataBoundItems = True
            uxEmployee.DataBind()
        End If

    End Set
End Property

Public WriteOnly Property Department() As String
    Set(ByVal value As String)
        _department = value
    End Set
End Property

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not (IsPostBack) Then
        Dim emp As New Employee()

        With uxEmployee
            If _department <> String.Empty Then
                .DataSource = emp.GetByDept(_department)
            Else
                .DataSource = emp.GetList()
            End If
            .DataTextField = "FullName"
            .DataValueField = "UserName"
            .DataBind()
        End With
    End If
End Sub

моя страница вызова использует следующее при загрузке страницы .. uxSalesleadv является экземпляром uxemployee

    Dim objPrj As ServiceProject = New ServiceProject()
        objPrj = objPrj.GetItem(prjID)
        With objPrj
            uxSalesLead.SelectedValue = .SalesLead
            End With

Ответы [ 3 ]

0 голосов
/ 24 марта 2011

Попробуйте использовать FindByName().Если это работает, то значения не устанавливаются должным образом при первоначальной настройке источника данных.

0 голосов
/ 24 марта 2011

После долгих проб и ошибок и отладки я выяснил проблему.

Мне удалось заставить работать элемент управления правильно, когда я переместил свое назначение данных из page_load в событие pre_render.Хотя это было не идеально. Я обнаружил, что usercontrol устанавливает значение до того, как происходит фактическая привязка данных.

Теперь я удалил логику из своего свойства Set и теперь добавил логику в мои элементы управления page_loadпривязка данных, чтобы проверить, находится ли предыдущее значение SET в списке привязки данных.Если это не так, он добавляет элемент.Это позволит мне использовать пользовательский контроль во всех моих приложениях без какого-либо дополнительного кода страницы и беспокоиться о том, что элемент не содержится в списке ошибок.

0 голосов
/ 24 марта 2011

Метод выполняет точное совпадение, учитывает регистр и не учитывает культуру.Вы проверили, что значения в отладчике идентичны?

...