2011-03-23 32 views
0

我正在用這個拉出我的頭髮。FinByValue在UserControl的上下文中不起作用DropDownList

我有一個員工dropdownlist usercontrol(uxEmployee),我已經公開SelectedValue方法作爲屬性(SelectedValue)。

在我的頁面我想要根據我的數據設置值或將值添加到列表中,如果它目前不在那裏。

無論我做什麼,它都將設置值添加到列表中。即使該值已經在列表中,它仍然在增加價值。無論我做什麼,基本上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 
+0

你最初如何填充uxEmployee.Items? – 2011-03-23 23:11:08

+0

我的GetList函數只返回一個reguluar業務對象類的數據集。 – jsam 2011-03-24 04:47:48

+0

是否可以在dropdownlist usercontrol的SET屬性中使用getselectedvalue?任何人可以協助? – jsam 2011-03-24 06:39:10

回答

0

該方法執行精確匹配和區分大小寫和不區分區域性的一個實例。你是否檢查過調試器中的值是否相同?

+0

我試圖但我得到通用的「爲了評估一個索引的屬性,該屬性必須是合格的..」的員工的項目集合。我對此感到不知所措。我花了整整一天的時間來研究這個問題,但仍然不知道爲什麼它不能正常工作。 – jsam 2011-03-24 04:49:48

0

嘗試使用FindByName()。如果它起作用,那麼當您最初設置數據源時,值不會被正確設置。

+0

仍然不起作用。我已經使用相同的程序測試了findbyvalue,但使用了onpage ddl而不是usercontrol,它工作正常。它只是在用戶控件不工作,我不知道爲什麼。 – jsam 2011-03-24 14:28:04

0

經過大量的反覆試驗和調試,我發現了這個問題。

當我將數據分配從page_load移至pre_render事件時,我能夠使控件正常工作。雖然這並不理想,但我終於發現,在實際的數據綁定發生之前,usercontrol正在設置該值。

我現在已經將邏輯移出了我的Set屬性,現在將邏輯添加到了我的控件page_load數據綁定中,以檢查前一個SET值是否位於數據綁定列表中。如果沒有,則添加該項目。這將允許我在整個我的應用程序中使用用戶控件,而不需要任何額外的頁面代碼,並且擔心項目不在列表錯誤中。

相關問題