RadGrid заполняет раскрывающийся список в режиме вставки/редактирования

У меня есть RadGrid, в котором есть функции вставки и редактирования.

Одно из полей является раскрывающимся.

Мои требования

  • Когда пользователь нажимает «Добавить новый», я хочу иметь возможность изменять некоторые свойства в раскрывающемся списке и заполнять его, когда данные
  • Когда пользователь редактирует строку, мне нужно изменить выбранный индекс раскрывающегося списка, чтобы показать редактируемые данные и отключить его. Мне как-то нужно обработать одно из событий сетки, определить, находится ли он в режиме вставки/редактирования, а затем использовать FindControl, чтобы получить доступ к моему раскрывающемуся списку.

Я просмотрел ряд событий, таких как ItemCommand, DataBound, ItemCreated и т. д., и я просто не могу понять, как получить доступ к моему раскрывающемуся списку? Мне нужно знать, какой объект мне нужно вызвать, чтобы найти элемент управления, чтобы перейти к моему раскрывающемуся списку.

Спасибо.


person Remotec    schedule 22.05.2011    source источник


Ответы (2)


Начните с этого документа и помните, что чтобы определить операцию вставки/обновления, вы можете проверить свойство GridTableView.IsItemInserted и коллекцию EditItems сетки соответственно. Подходящими событиями для изменения значений элемента или отключения раскрывающегося списка являются ItemDataBound и ItemCreated.

person Dick Lampard    schedule 24.05.2011

Вы можете попробовать использовать GridDropDownColumn для создания раскрывающегося столбца внутри сетки, который автоматически заполняет раскрывающийся список в режиме редактирования или вставки. Пример:

<telerik:GridDropDownColumn UniqueName="ParamType" DataField="ParamType" HeaderText="Parameter type" HeaderStyle-HorizontalAlign="Center" DropDownControlType="RadComboBox" ListDataMember="ParamType" ListTextField="ParamType" ListValueField="ParamType">
</telerik:GridDropDownColumn>

И вы можете заполнить данные или получить доступ к раскрывающемуся списку внутри события ItemDataBound. Пример:

    protected void GvParametersItemDataBound(object sender, GridItemEventArgs e)
    {
                if (e.Item is GridEditableItem && e.Item.IsInEditMode)
                {
                    //bind data to ddl in edit mode
                    GridEditableItem editedItem = e.Item as GridEditableItem;
                    GridEditManager editMan = editedItem.EditManager;
                    GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor("DropDownColumnUniqueName"));
                    RadComboBox ddList = editor.ComboBoxControl;
                    ddList.RenderMode = Telerik.Web.UI.RenderMode.Auto;

                    ddList.OnClientSelectedIndexChanged = "OnClientSelectedParamerterIndexChanged";
                    ddList.DataTextField = Constants.DataTextField;
                    ddList.DataValueField = Constants.DataValueField;
                    ddList.DataSource = GetParameterTypes();
                    ddList.DataBind();
                }
    }
person Diane    schedule 30.10.2015