gönderilmeden önce otomatik tamamlama değerlerini anahtarla değiştirin. Düzenleme veritabanı tablolarını sitemde daha etkileşimli yapmak için HandsOnTable kullanıyorum.Handsontable
HandsOnTable veritabanımdaki bazı sütunların aslında yerel dize değerleri yerine yabancı anahtarları depolaması dışında neredeyse tüm gereksinimlerimi karşılar.
Kullanıcı Arabirimi'nde, bu sütunların, kullanıcının daha önce bahsedilen yabancı anahtarla eşlenmiş bir okunabilir değer seçtiği açılır menüler olarak görünmesini istiyorum (örneğin, bir HTML adı/değeri gibi bir select
gibi).
Ne yazık ki HandsOnTable'in böyle bir hücre tipi yok. Buna en yakın şey autocomplete
. Bu, bir açılır menü oluşturmamı sağlar, ancak yalnızca değerleri içerir; karşılık gelen anahtar yok. İşte böyle ortaya çıkıyor:
{
"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"]}
]
}
: tabloyu işlemek için HandsOnTable ihtiyaç duyduğu parametreleri içeren
Bir:
"source": ["Jebediah", "Bob", "Bill", "Buzz"]
Yani ne planlıyorum sunucudan iki Json dizeleri göndermektir değerler Şimdiye kadar
{
"mappings": [
{"key": 0, "value": "Jebediah"},
{"key": 0, "value": "Bob"},
{"key": 0, "value": "Bill"},
{"key": 0, "value": "Buzz"}
]
}
çok iyi için
ikinci haritalama tuşları. Şimdi zor kısmı için:
HandsOnTable bir işlev (getData()
) sahiptir hazır bir Json dize sunucuya geri gönderilmek üzere olduğu bana tabloları veri almak için izin verir:
var jdata = myHandsOnTable.getData();
jdata görünecektir böyle:
"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" }
]
Şimdi göndermeden önce, bunu değiştirmek istiyorum
mappings
json dize içinde bunların eşleme çifti anahtarla
Customer
düğüm değerleri.
Bunu JavaScript/JQuery'de nasıl en iyi şekilde yapabilirim?
?:
jdata.replaceNode('node', mappings)
Teşekkür
Teşekkür @PostureOfLearning: senin açılan koşullu seçenekleri kullanarak daha gelişmiş bir demo bulunabilir anlıyorum Eğer doğru kullanıcı 'CategoryName' ile etkileşime 'autocomplete' ve harici 'açılan '/ select' '# CategoriesFilterDropdown' türünde olan sütun, kullanıcı için görünür değil, bunun yerine haritalama işlemini basitleştirmek için kullanılır. Ayrıca, 'CategoryID' sütununu nasıl gizlersiniz? Sadece "renderer" kullanıyor ve css "visibility" özelliğini "hidden" olarak ayarlıyor musunuz? – Chopo87
@ Chopo87, eklediğim 'özet' konusuna bakın. 'Haritalama aracım' olarak, sayfada görünür ve başka bir yerde bulunan CategoriesFilterDropdown'u kullanıyorum. Bunu yapıyorum çünkü diğer amaçlarla görülebilen açılmaya ihtiyacım vardı ve verileri çoğaltma ihtiyacını hissetmedim. Sizin durumunuzda, bunun yerine kimliklere bakmak için bir hashtable kullanmak isteyebilirsiniz. – PostureOfLearning
Harika, Çok teşekkürler @ PostureOfLearning !!! – Chopo87