Как динамически изменить bottominfo в формах? - PullRequest
0 голосов
/ 14 марта 2012

Проблема в том, что я создал функцию, которая возвращает значение bottominfo.

var bottominfo = function (){
        var vMonth = document.getElementById('cmb_Month').value;
                    var vYear = document.getElementById('Year').value;
                    var StartDate = firstdayofmonth(vMonth, vYear);
                    var EndDate = lastdayofmonth(vMonth, vYear);            
                    var next=getnext(StartDate,EndDate);
                    var bottominfo='You are going to add'+next;

                    alert(bottominfo);
                    return bottominfo;
                };

Но функция вызывается только при первой загрузке сетки, а не каждый раз, когда я открываю форму.Есть ли способ изменить bottominfo каждый раз, когда я открываю форму?

ОБНОВЛЕНО 3: У меня есть такой метод:

  jQuery(list).jqGrid('navGrid',pager,{edit:true},
                {
                            width:colwidth*1.05,
                            height:"auto",
                            reloadAfterSubmit:true,
                            closeAfterAdd: true,
                            recreateForm: true,
                            drag: false,
                            onClose: after,
            bottominfo: bottominfo()});

Есть ли проблема с способомя вызываю функцию?

ОБНОВЛЕНО 2

Остальные свойства мне не очень помогают, поэтому я их стер.Другой код:

 function firstdayofmonth(vMonth, vYear){
return vYear+'-'+vMonth+'-01';
}

 function lastdayofmonth(vMonth, vYear){
var myDate=new Date();
var vMonth=parseInt(vMonth)+2;
var vYear=parseInt(vYear);
if (vMonth>12)
{vYear=vYear+1;
vMonth=vMonth-12;}
myDate.setFullYear(vYear, vMonth, 0);
return myDate.getFullYear()+'-'+(myDate.getMonth()+1)+'-'+myDate.getDate();
}

var nextprogram=0;


function getnext(StartDate,EndDate) {

next="Applications between"+StartDate+"and"+EndDate;
return next;
}

1 Ответ

0 голосов
/ 14 марта 2012

Вероятно, вам просто следует использовать свойство refreshateForm: true в качестве дополнительной опции настроек "Добавить" и "Редактировать" (см. здесь пример).Лично я изменяю $.jgrid.edit на использование recreateForm: true по умолчанию во всех проектах, которые я сделал для клиентов.

Кроме того, вы должны заменить один ; в своем коде на ,, потому что в настоящее время bottominfo переменнаяне определены и должны интерпретироваться как глобальные.Некоторые браузеры прекращают выполнение кода в строгом режиме и интерпретируют регистр как ошибку.Поэтому просто замените

var next=getnext(StartDate,EndDate);
    bottominfo='You are going to add'+next;

на

var next=getnext(StartDate,EndDate),
    bottominfo='You are going to add'+next;

ОБНОВЛЕНО: Вы используете bottominfo: bottominfo() в качестве параметра метода navGrid.Таким образом, значение для будет установлено только один раз во время вызова.Чтобы иметь возможность иметь динамический bottominfo, я могу предложить вам два способа:

1) Сначала вы можете вызвать navGrid с параметрами add:false, edit:false, а затем использовать navButtonAdd для добавления пользовательских кнопок.который выглядит как оригинальные кнопки «Добавить» и «Редактировать».Внутри обратного вызова onClickButton вы получите идентификатор строки выбранной строки (параметр selrow относительно getGridParam), а затем вызовите editGridRow со всеми необходимыми параметрами.

2) В качестве альтернативы вы можете установить любую фиктивную строку как bottominfo и вручную перезаписать ее на другой текст.Код может быть похож на следующий

$.extend($.jgrid.edit, {
    bottominfo: "dummy text",
    recreateForm: true,
    beforeShowForm: function ($form) {
        var $bottomInfo = $form.parent().find("table.EditTable td.bottominfo");
        $bottomInfo.html('<span style="color:red">Now: ' + new Date() + '</span>');
    }
});

см. демо :

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...