Как инициализировать поле со списком в InitNewRow

Я пытаюсь заполнить ASPXComboBox, используя событие InitNewRow для вставки новой строки, но у меня возникают проблемы с привязкой данных к ASPXComboBox.

Я использовал событие CellEditorInitialize для редактирования строки, и оно работает нормально, но тот же принцип в событии InitNewRow возникает с исключением «объект не установлен в экземпляр объекта». Однако вызываемая функция бизнес-логики возвращает полностью заполненную таблицу данных.

Может ли кто-нибудь помочь с этим, пожалуйста.


person tony    schedule 29.06.2011    source источник
comment
не могли бы вы указать разметку сетки и обработчики событий на стороне сервера?   -  person Mikhail    schedule 30.06.2011
comment
пожалуйста, опубликуйте свой код в обработчике событий InitNewRow, а также объясните, хотите ли вы только установить значение редактора или вы также хотите назначить источник данных редактора?   -  person DevExpress Team    schedule 30.06.2011
comment
Я поместил код в событие InitNewRow и попытался связать e.NewValues ​​с упорядоченным словарем. Однако я должен был понять, что поле со списком будет автоматически связываться. Я хочу установить источник данных со списком   -  person tony    schedule 30.06.2011
comment
Когда я привязываю данные к элементу управления с помощью e.NewValues(), он просто возвращает сведения об элементе, с которым он был связан.   -  person tony    schedule 30.06.2011


Ответы (1)


Если вы хотите установить DataSource для comboBox, используйте для этой цели событие CellEditorInitialize. Если вам нужно определить, когда сетка работает в режиме вставки новой строки, используйте IsNewRowEditing ASPxGridView. имущество. т.е. код должен быть примерно таким:

protected void ASPxGridView1_CellEditorInitialize(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs e) {
        ASPxGridView grid = sender as ASPxGridView;
        if(e.Column.FieldName == "SomeFieldName" && grid.IsNewRowEditing) {
            ASPxComboBox combo = e.Editor as ASPxComboBox;
            combo.DataSource = DataTable;
            combo.DataBindItems();
        }
    }

Этот подход работает для вас?

person DevExpress Team    schedule 30.06.2011
comment
да, когда я редактирую строку, а не создаю новую. Мне нужен этот точный принцип, но когда я нажимаю кнопку новой команды, так что, когда пользователь хочет добавить новую строку в представление сетки, ему будет представлено полностью заполненное поле со списком - person tony; 30.06.2011
comment
Хорошо, этот подход должен работать для вас. Переменная DataTable в моем коде выше должна предоставлять необходимые данные для редактора. - person DevExpress Team; 30.06.2011