2013-11-08 3 views
0

Я загружаю datasource в раскрывающийся список и привязку, но в каком-то сценарии происходит новое значение (с учетом регистра), поэтому я не могу установить в качестве выбранного значения для выпадающего списка? Как добиться этого, означает показать выбранное значение datagrid как текст в выпадающем списке?Как добавить новое значение в Dropdownlist

Заполнение данных в списке

Me.RmtRouterName.DataSource = Me.datareader_1param("pr_list_dev_by_site", 
    SiteID, "@enter_value") 
Me.RmtRouterName.DataTextField = "devname" 
Me.RmtRouterName.DataValueField = "devname" 

Чтение значения из DataGrid

tmpstr = MyIIF(Me.SiteInfo1.Tables(SiteInfoTableName).Rows(0), "RmtRouterName") 
If (tmpstr = String.Empty) Then 
    Me.RmtRouterName.SelectedIndex = -1 
Else 
    Me.RmtRouterName.SelectedValue = tmpstr 

в некоторых случаях значения DataReader и datgrid значения несовпадающих (из-за чувствительно к регистру), как преодолеть эту проблему

+0

Посмотрите на http://stackoverflow.com/a/9195606/ 961695 –

ответ

0

В вашей логике Else попытайтесь найти текстовое значение в выпадающем списке, прежде чем пытаться установить SelectedValue, как это:

Helper Функция:

Public Function FindByTextCaseInsensitive(ByVal ctl As ListControl, ByVal text As String) As ListItem 
    If ctl Is Nothing Then 
     Return Nothing 
    End If 

    For Each li As ListItem In ctl.Items 
     If String.Compare(li.Text, text, True) = 0 Then 
      Return li 
     End If 
    Next 

    Return Nothing 
End Function 

Теперь в вашем Else блоке, сделайте следующее:

Else 
    Dim foundItem As ListItem = FindByTextCaseInsensitive(tmpstr) 

    If foundItem Is Nothing Then 
     Me.RmtRouterName.SelectedIndex = -1 
    Else 
     Me.RmtRouterName.SelectedValue = tmpstr 
    End If 
End If 
Смежные вопросы