HandsOnTable を使用して、自分のサイトでデータベース テーブルをよりインタラクティブに編集できるようにしています。
HandsOnTable は、私のデータベースの一部の列がローカル文字列値ではなく外部キーを実際に格納することを除いて、ほぼすべての要件を満たしています。
UI では、これらの列をドロップダウン メニューとして表示し、ユーザーが前述の外部キー (つまり、HTML の name/value のようなものselect
) にマップされた読み取り可能な値を選択できるようにしたいと考えています。
残念ながら、HandsOnTable にはそのようなセル型はありません。それに最も近いのは ですautocomplete
。これにより、ドロップダウンを作成できますが、値のみが含まれています。対応するキーはありません。作成方法は次のとおりです。
"source": ["Jebediah", "Bob", "Bill", "Buzz"]
したがって、私が計画しているのは、サーバーから 2 つの 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"]}
]
}
キーから値への 2 番目のマッピング
{
"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)
ありがとう