【问题标题】:jqgrid - How to dynamically change bottominfo in forms?jqgrid - 如何动态更改表单中的底部信息?
【发布时间】:2012-03-14 08:48:41
【问题描述】:

问题是我已经创建了一个函数,它返回一个底部信息的值。

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;
                };

但该函数仅在首次加载网格时调用,而不是每次打开表单时调用。有没有办法在每次打开表单时更改底部信息?

更新 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;
}

【问题讨论】:

    标签: forms jqgrid


    【解决方案1】:

    您可能应该只使用recreateForm: true 属性作为“添加”和“编辑”设置的附加选项(参见here 示例)。我个人将$.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) 您可以先使用add:false, edit:false 选项调用navGrid,然后使用navButtonAdd 添加自定义按钮,类似于原来的“添加”和“编辑”按钮。在onClickButton 回调中,您将获得当前选定行的rowid(获取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>');
        }
    });
    

    the demo:

    【讨论】:

    • @ilektrologaki:您应该发布更完整的代码,这些代码可用于重现您的问题。您在某处使用的选项列表并不能真正帮助您理解和清除您遇到的问题。例如,方法bottominfo可以在您使用的语句执行期间只调用一次
    • 我发布了更多代码。你需要别的东西来重现问题吗?为什么方法bottominfo只被调用一次?重新创建表单时不应该声明:bottominfo:bottominfo() 每次调用函数?
    • 未满的代码。 editGridRow 方法的 bottominfo 属性有问题。因此,查看显示如何调用editGridRow 方法的代码很重要:直接或间接。例如,如果您直接在ondblClickRow 回调中调用editGridRow 方法,则每次都会填充bottominfo 属性的值。如果您在其他时间使用navGrid once 并使用bottominfo 属性作为选项,则bottominfo 属性将在navGrid 调用时计算once .
    • 对不起。我不明白我调用 editGridRow 的方式很重要。所以,我确实有导航网格,每次打开表单时我都需要更改底部信息
    • 我觉得你真是太棒了!哇!非常感谢。我使用了第二个建议。
    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 2017-01-21
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    相关资源
    最近更新 更多