jqgrid错误选择编辑框中的下拉选项值

时间:2010-12-17 10:38:08

标签: javascript jquery jqgrid edit

我正在使用表单编辑。表单中有两个选择框。一个选择框是国家,另一个选择框是国家。状态选择框取决于所选的国家/地区,并将动态填充。例如:

国家:

  

美国(期权价值= 1)
英国(期权价值= 2)

美国州:

  

Alabama(期权价值= 1)
加利福尼亚州(期权价值= 2)
佛罗里达州   (期权价值= 3)
夏威夷(期权价值= 4)

英国国家:

  

伦敦(期权价值= 5)
牛津(期权价值= 6)

如上所示,uk的状态ID以5开头。当我编辑包含Country id=2 (UK)State id=6 (Oxford)的记录时,编辑表单将正确显示 - 国家/地区为英国,州为牛津。但是如果你下拉状态选择框,选项文本是正确的(它显示伦敦牛津),但选项值将从0开始。应该正确的选项值应该从5开始。

如果您选择并将国家/地区下拉框更改为美国,然后再次更改回英国,则选项值将正确填充(从5开始)。

我的问题是,当编辑表单加载时,如何根据编辑框中的国家/地区填充具有正确选项值的州的选择框?

2 个答案:

答案 0 :(得分:35)

您的问题的答案取决于您收到“State for US”和“State for UK”所显示信息的来源。 jqGrid支持两种可能性:1)editoptionsvalue参数的使用2)editoptionsdataUrlbuildSelect参数的使用。第一种方法是在本地编辑的情况下最好的方法,或者在可能的选项列表是静态的情况下。第二种选择将用于这种情况,即某些国家的州,国家和州的信息将从数据库中获得每个AJAX请求。我在示例中描述了使用value参数的解决方案,以便不依赖于服务器组件。在使用dataUrlbuildSelect的情况下,实施的大部分内容都是相同的。

我制作了the live example来证明你需要的东西。

主要问题是value的{​​{1}}在初始化时仅使用一次。在dataInit函数内部,可以覆盖editoptions,但在使用国家/地区更改第一个选择/下拉框中的值后,必须手动重建具有状态的第二个选择/下拉框。要做到这一点,必须要理解,选择HTML元素具有从行id'_'和列名称构造的id:rowId +“_ State”。此外,重要的是,必须将value的{​​{1}}重置为初始值,以便可以将任何状态ID解码为州名。

以下是the example的代码:

value

更新:我更新了上面的代码,以便在表单编辑的情况下使用它。你可以看到它here。因为jqGrid不支持表单编辑的本地编辑,所以我无法测试代码。不过,我希望我能充分利用所需的改变。

更新2 :我将上述代码扩展为支持

  1. 内联编辑,表单编辑,搜索工具栏和高级搜索
  2. 编辑表单中的上一个或下一个导航按钮
  3. 改善选择中的键盘支持(某些浏览器中刷新相关选择的问题已修复)
  4. 该演示的新版本为here。您在下面找到的演示的修改代码:

    editoptions

    更新3 :您将找到的演示代码的最后一个版本here

答案 1 :(得分:0)

我正在使用表单编辑。表单中有三个选择框。一个选择框是国家,一个选择框是城市,另一个选择框是街道。城市选择框取决于所选的国家/地区,并将动态填充。 街道选择框取决于所选城市,并将动态填充。    我在MySQL中保存了Country,City,Street。如果我选择国家,如何从MySQL表中更改城市选择框