【问题标题】:jqGrid column model creating at code behindjqGrid 列模型在代码后面创建
【发布时间】:2014-08-27 08:08:55
【问题描述】:

我在代码后面创建列模型,但我在为数字值创建编辑选项时堆栈,这是一个函数检查值,如果它的数字,否则会警告一条消息,但我无法在代码后面安装 javascript 函数。

在我在后面的代码中建模后,我转换为 json 以在 aspx 页面中使用。

后面的c#代码

else if (prop.PropertyType == typeof(decimal))
{
    pr.name = prop.Name;
    pr.index = prop.Name;
    pr.sorttype = "number";
    pr.editoptions = new { dataInit = numericonly };
}

aspx

    function numericonly(elem) {
        $(elem).numeric(false, function() { alert("Integers only"); this.value = ""; this.focus(); });
    }

【问题讨论】:

    标签: c# javascript asp.net jqgrid


    【解决方案1】:

    问题很清楚。 JSON 不支持将函数作为一种类型。您可以轻松执行以下操作:1)您在服务器端填写 strings 作为dataInit 的值。 2)您“预处理”列模型并将dataInit的非法字符串值更改为对相应函数的引用。您可以在创建网格之前或在 beforeProcessing 回调内部创建之后,甚至在开始编辑之前的某个地方“预处理”列模型。因为dataInit 将仅在编辑期间使用,您必须在任何时间修复dataInit在开始编辑之前

    要更改colModel,您可以使用setColProp 方法,也可以通过var colModel = $("#gridid").jqGrid("getGridParam", "colModel"); 获取内部colModel 数组的引用,然后对某些列进行任何必要的修改。代码如下:

    function numericonly(elem) {
        ...
    }
    
    ...
    var colModel = $("#gridid").jqGrid("getGridParam", "colModel"), i, cm;
    
    for (i = 0; i < colModel.length; i++) {
        cm = colModel[i];
        if (cm.editoptions != null && typeof cm.editoptions.dataInit === "string") {
            switch (cm.editoptions.dataInit) {
                case "numericonly":
                    // function numericonly is visible here and can be used
                    cm.editoptions.dataInit = numericonly;
                    break;
                ....
                default:
                    delete cm.editoptions.dataInit; // delete wrong value
                    break;
            }
        }
    }
    

    The old answer 包含对自定义格式化程序情况的相同想法的描述。

    【讨论】:

    • @Mert:不客气!顺便说一句,我建议您使用colModeltemplate 属性(有关详细信息,请参阅here)。您将遇到与dataInit 相同的问题,因为template 属性的值必须是对象而不是字符串。然而,列模板的使用主要对应于基于数据类型的格式以及所有排序、编辑、搜索和格式设置。使用模板可以减少colModel 并使您的代码更具可读性和可维护性。
    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多