0

我正在使用一个很棒的 JavaScript UI 库:w2ui。我正在学习小部件 Grid的工作原理。

Grid的每一行都使用唯一的整数 ID ( recid ) 进行标识。如果你的数据库有一个整数作为主键,这是完美的,你可以像recid一样使用这个键。但是我的数据库表有一个复合主键,4 列的组合。

首先我想到了一个解决方案:使用哈希函数使用 4 列值生成一个整数值:

hash(idA, idB, idC, idD) = recid

服务器返回的 JSON 示例:

records: [
   {
      "recid": 565587,
      "key": {
         "idA": "01",
         "idB": "01",
         "idC": "1981",
         "idD": "111"
      },
      "value": 1000
   }
]

recid在服务器计算并在客户端用于识别网格记录。

但这仍然不是解决方案,因为当我更改网格的单元格值(我正在使用内联编辑)时,小部件仅将更改的值和recid发送到服务器,而不是复合键。所以我无法识别数据库表行来进行更新。

有人有解决方案吗?

也许是强制将密钥对象发送到服务器的配置?

4

1 回答 1

0

文档

保存将提交更改的记录。但是,您可以覆盖 onSave 事件并使用它提交您想要的任何内容。您可以 (1) 将其添加到 grid.postData 对象或 (2) 使用 $.ajax() 自己提交

看起来你必须覆盖默认行为才能做你想做的事。

于 2015-10-27T22:51:08.603 回答