ASPxGridView — «прерывание» событий вставки строки

#devexpress #aspxgridview

#devexpress #aspxgridview

Вопрос:

Надеюсь, кто-нибудь сможет указать мне правильное направление

Использование DevExpress ASPxGridView и формы редактирования.

Мне нужно «прервать» события вставки строк, чтобы предупредить пользователя, если уже есть запись, соответствующая их информации, и разрешить им продолжить или отменить.

Я добавил проверку (и отмену) к событию OnRowInserting и использую customJSProperties для запуска всплывающего окна при обратном вызове.

Но я застрял на том, как заставить всплывающую кнопку «да» возобновить (или перезапустить) вставку строки.

Есть ли способ снова запустить событие обновления editform из кода на стороне клиента?

Или мне нужен совершенно другой подход?

Ответ №1:

Прежде всего, я обнаружил, что в этой статье используется «да» / «нет» в режиме редактирования для логического значения

Во-вторых, я надеюсь, что все ваши строки имеют уникальное значение, например ID. Если это так, я предлагаю такой способ;

  • Используйте OnRowInserting функцию ASPxGridview . (Найдите здесь примеры кода и т. Д.)
  • Проверьте, находится ли ваш идентификатор вставки уже в вашем хранилище данных или нет. (При выполнении запроса)
  • Если в вашем хранилище данных или нет, используйте XtraMessageBox, например;
 XtraMessageBox.Show(“Content”, “Title”, MessageBoxButtons.YesNo);
  

перед этим добавьте DevExpress.XtraEditors пространство имен. Затем вы можете использовать его как;

 DialogResult myDialogResu<
myDialogResult = XtraMessageBox.Show("Content", "Title", MessageBoxButtons.YesNo);

if (myDialogResult == DialogResult.Yes)
{
    //yes was clicked
}

if (myDialogResult == DialogResult.No)
{
    //no was clicked
}
  

Надеюсь, это даст вам представление. И если у вас есть лицензия Devexpress, вы можете обратиться в службу поддержки Devexpress. Они действительно быстрые и полезные.

Ответ №2:

Вы можете решить эту проблему с помощью пользовательского HttpHandler. Что-то вроде этого:

  1. нажмите кнопку Сохранить в форме редактирования
  2. Save инициирует вызов httphandler (из javascript) с данными, необходимыми для проверки (имя таблицы, идентификатор). С помощью jquery вы можете вызвать http-обработчик следующим образом:
  3. если обработчик возвращает true, продолжайте с сохранением, в противном случае отобразите предупреждение с OK / Cancel
  4. если пользователь выбирает OK, продолжайте сохранять

Вызов Javascript с обработчиком http будет выглядеть следующим образом:

 $.ajax({
    async: false,
    cache: false,
    url: 'YourHttpHandler.ashx',
    data: { tableName: "your table name", record_id: your_id },
    success:
        function (data, textStatus, xmlHttpRequest)
        {
            if(data.result==true) 
                if(confirm('Continue?')) 
                {
                    // continue with save 
                }
        }
});
  

Комментарии:

1. Спасибо за предложения — ни один из этих подходов на самом деле не работает с событием onrowinserting из editform. Я применил другой подход к проблеме, требуя, чтобы пользователь снова нажал сохранить.