GridView Dropbox - PullRequest
       9

GridView Dropbox

1 голос
/ 05 мая 2010

Я пытаюсь использовать GridView для отображения списка компонентов в ASP.NET. Я пытаюсь сделать его редактируемым одновременно. Один из столбцов - это строка, которая должна быть выбрана из списка, когда пользователь редактирует строку.

Итак, я попробовал следующее:

  1. Преобразование строки BoundField в шаблон ItemTemplate
  2. Добавить раскрывающийся список в окно шаблона в виде сетки
  3. привязывает выбранный элемент к строке

В этот момент я получаю сообщение об ошибке, поскольку элементы списка не были настроены в раскрывающемся списке. Итак, я думаю, две вещи, которые меня интересуют:

  1. Как назначить элементы в раскрывающемся списке динамически созданному списку параметров?
  2. Как сделать так, чтобы выпадающий список появлялся только при редактировании строки?

Хорошо, поэтому я обнаружил поле "EditItemTemplate" в Visual Studio, которое отвечает # 2.

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

1 Ответ

0 голосов
/ 05 мая 2010

В вашем DropDownList вы можете назначить событие OnDataBinding, а затем использовать его, чтобы заполнить ваш DropDownList пользовательскими данными.

Пример:

<Columns>
    <asp:TemplateField>
        <EditItemTemplate>
            <asp:DropDownList ID="yourDropDownList" runat="server"
                DataTextField="YourTextFieldName" DataValueField="YourValueFieldName"
                OnDataBinding="yourDropDownList_DataBinding"></asp:DropDownList>
        </EditItemTemplate>
    </asp:TemplateField>
</Columns>

Затем в вашем коде позади реализуйте OnDataBinding:

protected void yourDropDownList_DataBinding(object sender, System.EventArgs e) 
{ 
    DropDownList ddl = (DropDownList)(sender);
    // GetMyDropDownListData should return cached data so your not hitting your DB
    // each time. You can customize the data for each row here. Use the Eval command
    // to access the current rows databound values.
    ddl.DataSource = GetMyDropDownListData();
    ddl.DataBind();  // Now all the options will be loaded

    // Set the current field's selected value
    ddl.SelectedValue = Eval("YourSelectedValueFieldName").ToString();
}

Надеюсь, это поможет.

...