获取jqgrid选择的“值”字段

时间:2013-04-11 11:46:22

标签: jqgrid jqgrid-formatter

我在jqgrid表中定义了一个select,如下所示:

{name: 'station', index: 'station', editable: true, width: 60,
  edittype:"select", defaultValue:"",
  editoptions:{
         dataUrl: "getStationList"
  },
  editrules: { required: true }
},

getStationList返回类似于:

的内容
<select>
<option value="id1">Station1</option>
<option value="id2">Station2</option>
</select>

使用当前定义,第一次显示组合时,Station列表显示得很好(Station1,Station2,...),当选择了Station1时,JSON包含“id1”。 但是当表格更新时,它会在选择组合中显示“id1”,而不是继续显示电台的列表。

这是一个错误还是我缺少一些配置选项? (可能是最后一次)

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为在填充网格期间你已经遇到了问题。如果您想使用ID而不是名称,则应使用formatter: "select" 另外edittype:'select'(请参阅the documentation)。在这种情况下,在使用数据填充网格期间,您必须在网格中放置ID。我的意思是jqGrid的输入数据包含id1id2而不是"Station1""Station2"。只有在您能够使用提供dataUrl的{​​{1}}的情况下。下一个问题是:您必须设置<option value="id1">Station1</option>editoptions.value而不是使用formatoptions.value。因此dataUrl: "getStationList"的使用相对复杂。可以做的是发送像formatter: "select" 这样的数据作为主网格数据的一部分。可以将{"id1":"Station1", "id2":"Station2"}作为JSON输入的{stations: {"id1":"Station1", "id2":"Station2"}}部分放置(请参阅the documentation)。在userdata回调内,可以根据beforeProcessing设置formatoptions.value。事实上,不仅在编辑数据期间,而且在每次填充网格时,事实上都会向userdata.stations发出请求。

我个人更喜欢不使用getStationList并使用

形式的选择
formatter: "select"

客户端代码在某种程度上“不知道”数据表示的实现细节。可以使用数据“Station1”和“Station2”填充网格,并在编辑网格期间发送相同的数据。另一方面的服务器将在需要时通过名称获取ID。通常,如果我使用“Id”和“Name”这样的列创建“查找”表<select> <option value="Station1">Station1</option> <option value="Station2">Station2</option> </select> ,我会设置

Stations

因此表中有唯一索引可以通过名称获取Id。所有带有Name的Update语句都与Id完全一样快。我在所有内部SQL语句中使用Id,但仅将Name发送到外部源。我不需要使用CONSTRAINT UC_Stations_Name UNIQUE NONCLUSTERED (Name ASC)