我正在使用表单编辑。表单中有两个选择框。一个选择框是国家,另一个选择框是国家。状态选择框取决于所选的国家/地区,并将动态填充。例如:
国家:
美国(期权价值= 1)
英国(期权价值= 2)
美国州:
Alabama(期权价值= 1)
加利福尼亚州(期权价值= 2)
佛罗里达州 (期权价值= 3)
夏威夷(期权价值= 4)
英国国家:
伦敦(期权价值= 5)
牛津(期权价值= 6)
如上所示,uk的状态ID以5开头。当我编辑包含Country id=2 (UK)
和State id=6 (Oxford)
的记录时,编辑表单将正确显示 - 国家/地区为英国,州为牛津。但是如果你下拉状态选择框,选项文本是正确的(它显示伦敦牛津),但选项值将从0开始。应该正确的选项值应该从5开始。
如果您选择并将国家/地区下拉框更改为美国,然后再次更改回英国,则选项值将正确填充(从5开始)。
我的问题是,当编辑表单加载时,如何根据编辑框中的国家/地区填充具有正确选项值的州的选择框?
答案 0 :(得分:35)
您的问题的答案取决于您收到“State for US”和“State for UK”所显示信息的来源。 jqGrid支持两种可能性:1)editoptions的value
参数的使用2)editoptions的dataUrl
和buildSelect
参数的使用。第一种方法是在本地编辑的情况下最好的方法,或者在可能的选项列表是静态的情况下。第二种选择将用于这种情况,即某些国家的州,国家和州的信息将从数据库中获得每个AJAX请求。我在示例中描述了使用value
参数的解决方案,以便不依赖于服务器组件。在使用dataUrl
和buildSelect
的情况下,实施的大部分内容都是相同的。
我制作了the live example来证明你需要的东西。
主要问题是value
的{{1}}在初始化时仅使用一次。在dataInit函数内部,可以覆盖editoptions
,但在使用国家/地区更改第一个选择/下拉框中的值后,必须手动重建具有状态的第二个选择/下拉框。要做到这一点,必须要理解,选择HTML元素具有从行id'_'和列名称构造的id:rowId +“_ State”。此外,重要的是,必须将value
的{{1}}重置为初始值,以便可以将任何状态ID解码为州名。
以下是the example的代码:
value
更新:我更新了上面的代码,以便在表单编辑的情况下使用它。你可以看到它here。因为jqGrid不支持表单编辑的本地编辑,所以我无法测试代码。不过,我希望我能充分利用所需的改变。
更新2 :我将上述代码扩展为支持
答案 1 :(得分:0)
我正在使用表单编辑。表单中有三个选择框。一个选择框是国家,一个选择框是城市,另一个选择框是街道。城市选择框取决于所选的国家/地区,并将动态填充。 街道选择框取决于所选城市,并将动态填充。 我在MySQL中保存了Country,City,Street。如果我选择国家,如何从MySQL表中更改城市选择框