C# API制表器-求和列值-单元格值动态合计编辑

C# API制表器-求和列值-单元格值动态合计编辑,c#,asp.net-mvc,asp.net-core,asp.net-ajax,tabulator,C#,Asp.net Mvc,Asp.net Core,Asp.net Ajax,Tabulator,我正在用C#、asp.net、JQuery和制表器开发一个web应用程序,它通过RESTAPI提供 我正在尝试实现两件事,我的制表器定义如下,应在以下列表中提供行总和: AvailTotal field 编辑任何列中的每个列值后: availableBedsM, availableBedsF, availableBedsC 有人能帮忙吗,我需要在AvailTotal列中设置一个默认值,以便在值更改时动态地反映对上述字段的任何编辑 我的制表器: // tabulator start

我正在用C#、asp.net、JQuery和制表器开发一个web应用程序,它通过RESTAPI提供

我正在尝试实现两件事,我的制表器定义如下,应在以下列表中提供行总和:

 AvailTotal field 
编辑任何列中的每个列值后:

 availableBedsM, availableBedsF, availableBedsC
有人能帮忙吗,我需要在AvailTotal列中设置一个默认值,以便在值更改时动态地反映对上述字段的任何编辑

我的制表器:

 // tabulator start
 var tabledata = new Tabulator("#example-table", {
     persistence:true, //enable table persistence
     reactiveData: true,
     height: (window.innerHeight - 10),
     ajaxURL: "api/bed_data_",
     groupBy:"siteCOSitrep",
     columns:[

     {title:"Ward Code", 
         field:"wardCode", 
         frozen:true,
         width:200
     },
         {//create column group
             title:"Available Beds",
                      columns:[
                      {title:"Male", 
                     field:"availableBedsM", 
                     align:"center", 
                     headerVertical:true,  
                     width:50, 
                     editor:"number",
                     validator:["integer", "min:0", "required", "max:99"],
                     topCalc:"sum", topCalcParams:{precision:0,},
                     cellEdited: function(cell) {
                     cell.AvailTotal = cell.getValue() + tabledata.availableBedsF + tabledata.availableBedsC;}
            },

                 {title:"Female", 
                     field:"availableBedsF", 
                     align:"center", 
                     headerVertical:true, 
                     width:50, 
                     editor:"number",
                     validator:["integer", "min:0", "required", "max:99"],
                     topCalc:"sum", topCalcParams:{precision:0,},
                     cellEdited: function(cell) {
                     cell.AvailTotal = cell.getValue() + tabledata.availableBedsM + tabledata.availableBedsC;}
            },
                 {title:"Cubicle", 
                     field:"availableBedsC", 
                     align:"center", 
                     headerVertical:true, 
                     width:50, 
                     editor:"number",
                     validator:["integer", "min:0", "required", "max:99"],
                     topCalc:"sum", topCalcParams:{precision:0,},
                     cellEdited: function(cell) {
                     cell.AvailTotal = cell.getValue() + tabledata.availableBedsM + tabledata.availableBedsC;}
                 },
                 {title:"Avail Total",  
                     field:"AvailTotal",
                     align:"center", 
                     headerVertical:true, 
                     width:50,
                     topCalc:"sum", topCalcParams:{precision:0,},
                    },
                 ],
         },

如果您希望有一个基于其他列值计算的列,那么您需要考虑使用

如果我们假设您有第三列,希望保存val1val2列之和的值,则定义如下:

var sumMutator=函数(值、数据、类型、参数、组件){
//值-单元格的原始值
//数据-行的数据
//类型-发生突变的类型(数据编辑)
//params-列定义中的mutatorParams对象
//组件-当“type”参数为“edit”时,它包含已编辑单元格的单元格组件,否则它是该列的列组件
返回data.val1+data.val2;
}
{标题:“求和列”,字段:“sumcol”,变量:sumMutator}
如果您正在处理数据,则在更改数据本身时,应始终使用变量,这意味着列将正确排序。如果使用格式设置程序,这纯粹是一种视觉效果,意味着您将无法对列进行排序或筛选

如果您希望在其他列发生更改时更新计算列,那么我建议使用cellEdited回调来触发该列的更新:

函数updateCalc(cel){
cell.getRow().update({sumcol:false});
}
{标题:“Val 1”,字段:“Val 1”,单元格编辑:updateCalc}
不管你给什么值,改变它都会触发变异因子,变异因子会重新计算值