2010-01-22 9 views

ответ

2

Можете ли вы уточнить? Если вам нужен собственный модальный диалог, вы можете просто добавить обработчик событий (например, на кнопку «Редактировать»), чтобы при запуске откроется собственное диалоговое окно. Вы можете использовать диалог JQuery UI для этой цели и просто открыть его для своей собственной пользовательской формы.

Update После проверки исходного кода jqGrid, info_dialog это функция, которая используется для отображения этого конкретного диалога. Существует отдельный вызов для отображения всплывающего окна «Загрузка ...». Оффлайн, похоже, не является простым способом отключить info_dialog. Однако вы можете изменить источник jqGrid, чтобы выполнить то, что вам нужно. Вы можете либо:

  • Возвращение непосредственно из info_dialog - что может быть экстремальным, поскольку он может сообщить другие ошибки, нужно - или,

  • Найти и закомментировать вызов, отображающее эту конкретную ошибку АЯКС. Существует некоторая пробная ошибка, но с 18 вызовами этой функции вам не потребуется много времени для отслеживания. На самом деле, начать комментировать этот случай, так как он вызывается из error функции от АЯКС вызова:

    info_dialog(a.jgrid.errors.errcap,e.status+" : "+e.statusText+"<br/>"+u,a.jgrid.edit.bClose);

Очевидно, что такая модификация является последним средством, но как только он работает, Вы могли бы подумайте о том, чтобы скопировать патч для команды jqGrid, чтобы отключить оповещение.

+0

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

+0

Вы имеете в виду тот, который говорит «загрузка», например? –

+0

есть. и тот, который появляется всякий раз, когда запрос сервера был неудачным (я успешно захватил событие ajaxError и установил мое настраиваемое сообщение, но также появляется модальный диалог, в котором говорится об ошибке: 500 и соответствующем сообщении – yretuta

0

Поиск div.loadingui div.msgbox {...} где-то в css-файлах. Я думаю, что редактирование этого класса css выполнит эту работу.

0

Я знаю, что это из темы, но вы пробовали SlickGrid http://wiki.github.com/mleibman/SlickGrid/examples.

+0

Nice grid, но вы предлагаете ему начать с нуля только потому, что у него проблемы с отображением пользовательского окна сообщений? –

0

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

editoptions: { size: 20, maxlength: 10, 

          dataEvents: [ 
          { type: 'keypress', 
           fn: function (e) { 
            if (e.keyCode == 13) { 
             **$("#info_dialog").css('z-index', '100000');** 
            } 
           } 
          } 
         ] 


         } } 

Кроме того, если вы можете сделать это на другом месте, если у вас есть ответ сервера такой как ошибка

onCellSelect: function (rowid, iCol, aData) { 
        currentRow = rowid; 
        if (rowid && rowid !== lastsel) { 
         if (lastsel) jQuery('#ppGrid').jqGrid('restoreRow', lastsel); 
         $("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError); 
         lastsel = rowid; 
        } 
        else if (rowid && rowid === lastsel) 
        { $("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError); } 


       } 
0

Да, вы можете это сделать. вы можете сделать видимым свойство false [$("#info_dialog").visible(false);] модального окна, и вы можете позвонить, какой когда-либо был ваш собственный модальный бокс.

editrules: { custom: true, custom_func: validate_edit } 


function validate_edit(posdata, colName) { 
      var message = ""; 
      if (posdata != '' && $.isNumeric(posdata)) 
       return [true, ""]; 

      if (posdata == '') 
       message = colName + " field is required" 
      if (!$.isNumeric(posdata)) 
       message = posdata + " is not a number"; 

      alert(message); 

      $("#info_dialog").visible(false); 

      return [false, ""]; 
     } 
Смежные вопросы