我正在使用 HandsOnTable 使编辑数据库表在我的网站上更具交互性。
HandsOnTable 几乎满足了我的所有要求,除了我的数据库中的某些列实际上存储的是外键而不是本地字符串值。
在 UI 中,我希望这些列显示为下拉菜单,用户可以在其中选择映射到前面提到的外键的可读值(即类似于 HTML 名称/值select
)。
不幸的是 HandsOnTable 没有这样的单元格类型。最接近它的是autocomplete
. 这允许我创建一个下拉列表,但它只包含值;没有对应的键。以下是它的创建方式:
"source": ["Jebediah", "Bob", "Bill", "Buzz"]
所以我打算从服务器发送两个 Json 字符串:
一个包含 HandsOnTable 渲染表格所需的参数:
{
"data": [
{ "ID": 1, "Description": "Crude", "Volume": 204, "Customer": "jebediah" },
{ "ID": 2, "Description": "Hidrogen", "Volume": 513, "Customer": "Bob" },
{ "ID": 3, "Description": "Coal", "Volume": '67', "Customer": "Bill" },
{ "ID": 4, "Description": "Wood", "Volume": '513', "Customer": "Buzz" }
],
"columns": [
{ "data": "ID", "type": "numeric" },
{ "data": "Description", "type": "text"},
{ "data: "Volume", "type": "numeric" },
{ "data": "color", "type": "autocomplete", "strict": "true",
"source": ["Jebediah", "Bob", "Bill", "Buzz"]}
]
}
第二个映射键到值
{
"mappings": [
{"key": 0, "value": "Jebediah"},
{"key": 0, "value": "Bob"},
{"key": 0, "value": "Bill"},
{"key": 0, "value": "Buzz"}
]
}
到目前为止,一切都很好。现在是棘手的部分:
HandsOnTable 有一个函数 ( getData()
),它允许我检索表数据作为准备发送回服务器的 Json 字符串:
var jdata = myHandsOnTable.getData();
jdata 看起来像这样:
"data": [
{ "ID": 1, "Description": "Crude", "Volume": 204, "Customer": "jebediah" },
{ "ID": 2, "Description": "Hidrogen", "Volume": 513, "Customer": "Bob" },
{ "ID": 3, "Description": "Coal", "Volume": '67', "Customer": "Bill" },
{ "ID": 4, "Description": "Wood", "Volume": '513', "Customer": "Buzz" }
]
现在在发布之前,我想用json 字符串Customer
中的匹配对键替换节点的值。mappings
我怎样才能最好地在 JavaScript/JQuery 中实现这一点?
是否有一个功能如下?:
jdata.replaceNode('node', mappings)
谢谢