You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jqxGrid调用addrow方法无法添加行的问题排查求助

问题

调用jqxGrid的addrow方法无法添加行,已确认mailQuestionsGridSpec实例存在,控制台无报错。相关代码如下:

触发添加行的逻辑

$(document).on("click", "#BtnSendQuestion", function (e) {
    e.preventDefault();
    var privateValue=true;
    var prodData = {
        Rel: parseInt($("#InputRec").val()),
        Rec: true,
        Dep: $("#InputDep").val() == "-1" ? null : $("#InputDep").val(),
        Mai: $("#InputAdd").val(),
        Rece: $("#InputAddQuestionTo").val(),
        Sub: $("#InputAddQuestionS").val(),
        Pri: privateValue
    };
    if (prodData.Dep==null)
    {
        try {
            $("#mailQuestionsGridSpec").jqxGrid('addrow', null, prodData);
        } catch (error) {
            console.error('Error adding row:', error);
        }
    }
});

表格绑定代码

gridBindAll({ id: $('#InputRec').val() }, $('#mailQuestionsGridSpec'), "/Sp/GetSp/");

绑定函数的datafields配置

var gridBindAll = function (data, gridInput,url) {
    var gridData = Send(data, url);
    var source =
    {
        totalrecords: gridData.Response.length,
        localData: gridData.Response,
        datafields:
            [
                { name: 'Rec', type: 'int' },
                { name: 'Rel', type: 'int' },
                { name: 'Dep', type: 'int' },
                { name: 'Mai', type: 'string' },
                { name: 'Sen', type: 'string' },
                { name: 'Rece', type: 'string' },
                { name: 'Sub', type: 'string' },
                { name: 'Ans', type: 'string' },
                { name: 'Who', type: 'string' },
                { name: 'Upd', type: 'date' }
            ],
        datatype: "array",
    };

....

请问是数据问题还是绑定方式问题导致无法添加行?


分析与解决

核心问题是数据不符合grid定义的规则,具体问题点及修正方案如下:

1. 字段匹配问题

你构造的prodData里包含未在datafields中定义的Pri字段,同时缺少datafields要求的Sen、Ans、Who、Upd字段。jqxGrid添加行时,若数据缺少已定义的字段(尤其是带类型约束的),会静默失败。

2. 数据类型不匹配

  • Rec字段:datafields定义为int类型,但你赋值的是布尔值true,需改为1(对应int类型的真值)。
  • Dep字段:datafields定义为int类型,选中非-1选项时,直接取val()返回的字符串值未转成int;即使是null,也需在datafields中明确允许该字段为null(添加nullable: true)。

修正后的prodData示例

var prodData = {
    Rel: parseInt($("#InputRec").val()),
    Rec: 1, // 布尔值转int类型的1
    Dep: $("#InputDep").val() == "-1" ? null : parseInt($("#InputDep").val()), // 转成int类型
    Mai: $("#InputAdd").val(),
    Rece: $("#InputAddQuestionTo").val(),
    Sub: $("#InputAddQuestionS").val(),
    // 补充grid定义的必填字段,按业务逻辑赋值默认值
    Sen: "",
    Ans: "",
    Who: "",
    Upd: new Date() // 确保是date类型,或按业务规则赋值
    // 移除Pri字段,grid未定义该字段
};

额外优化

  • 在datafields的Dep字段中添加nullable: true,明确允许空值:
    { name: 'Dep', type: 'int', nullable: true }
    
  • 添加行后可调用$("#mailQuestionsGridSpec").jqxGrid('updatebounddata');强制刷新表格,确保新行显示。

内容的提问来源于stack exchange,提问作者wittream

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:16:14