Заполнить DropDownList из WebDataGrid - PullRequest
       11

Заполнить DropDownList из WebDataGrid

0 голосов
/ 16 декабря 2010

У меня есть WebDataGrid, связанный с SqlDataSource для отображения данных.Когда строка выбрана, я хочу заполнить некоторые текстовые поля и выпадающие списки данными из этой строки для целей редактирования.Текстовые поля работают нормально;Я использую следующий код, чтобы выбрать второе поле в сетке (Дата) и заполнить соответствующее текстовое поле (я использую VB):

txtDate.Text = currentRow.Items(2).Value

Однако, когда я пытаюсь заполнить выпадающие списки, используя тот жеСтруктура кода, я получаю следующую ошибку:

'ddlType' has a SelectedValue which is invalid because it does not exist in the list of items.

Я думаю, что проблема может быть в том, что выпадающие списки заполняются с использованием type_id, в то время как сетка отображает type_name.Будет ли это причиной проблемы, и есть ли способ обойти это?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2010

Есть несколько вещей, которые вы можете попробовать:

  1. Измените SQLDataSource, чтобы он также возвращал type_id, и установите для столбца значение visible = "false", чтобы вы могли выбрать это поле вместо имени и использовать его для .SelectedValue.

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

    'replace this with the call to currentRow.Items(#).Value
    Dim sometext As String = "type_name"

    DropDownListName.Items.FindByText(sometext).Selected = True

  3. Другая возможность состоит в том, чтобы перебрать каждый элемент в раскрывающемся списке и найти текст, это похоже на метод грубой силы, но работает.

    'replace this with the call to currentRow.Items(#).Value

    Dim sometext As String = "type_name"

    For Each ddItem As ListItem In ddArriveAMPM.Items

     `If String.Compare(sometext, ddItem.Text, True) = 1 Then`   
         `ddItem.Selected = True`
      `End If`        
    `Next`
    
0 голосов
/ 16 декабря 2010

Вы должны добавить элемент в список, прежде чем сможете его выбрать.

DropDownListX.Items.Add("Item");

или

DropDownListX.Items.Add(new ListItem("String","Value"));

Обязательно снимите флажок DropDown при выборе новой строки, в противном случаестарые значения строк останутся там.

DropDownListX.Items.Clear();

После этого вы можете использовать SelectedValue

Cheers, Stefan

...