说我有一个像这样的json字符串: 代码:
{"Staff":[{"id":1,"name":"John"},{"id":2,"name":"Mary"},{"id":3,"name":"Sandra"}],"Students":[{"id":2,"name":"Peter"},{"id":3,"name":"Carl"},{"id":4,"name":"Hodges"}]}
(注意:如果您想查看更好的格式化json字符串,请将其粘贴到http://json.parser.online.fr/)
我有两个组合框cmbStaff和cmbStudents。是否有可能将两个comobox绑定到同一个商店但有不同的jsonreaders?即cmbStaff的datareader将使用root读取字符串:'Staff'和cmbStudent将读取根'Students'的字符串?
这是为了节省商店制作的AJAX数量,并为每个comboBox设置不同的商店(想象一下,如果我的表单有20个组合框!)。
有什么想法吗?如果您需要更多信息,请随时通知我,谢谢!
答案 0 :(得分:1)
我不是百分之百,但我很确定最佳做法是每个组合框一个商店。如果您必须制作20个小型AJAX请求来制作表单,则需要提出20个请求。这真的不是那么多数据。从长远来看,它会让你的应用程序更容易维护,因为你不会有一些超级请求包含来自一堆组合框的所有这些无关的数据。
答案 1 :(得分:0)
加载操作后,商店中只有一组记录;你不会得到你想做的事情。
我会使用两个独立的商店。一个配置为加载学生,另一个配置为使用loadData函数加载人员,使用在收到加载事件时检索到的第一个json。
答案 2 :(得分:0)
正如其他人所说,你需要每个组合框一个商店。
如果您有相当静态的数据,请将它们作为Json抓取一次,并将其粘贴到某个全局数组中。为每个组合使用简单的ArrayStore,以避免一直返回服务器。
如果数据是易失性的,那么你必须反复提取它们,所以你也可以只使用两个单独的JsonStore,JsonReaders使用相同的脚本来服务你的数据。
答案 3 :(得分:0)
您可以拥有两个不同的JsonReaders。只需手动切换它们(即使用组合框的事件)。
答案 4 :(得分:0)
基本规则是:
相同的基础数据集但需要显示不同的列?使用相同的商店是可以的(只需将组合框指向需要的字段)。
不同的基础数据集(所需字段之间没有关系)?应该使用不同的商店。