0

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

{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>

使用当前定义,首次显示组合时,位置列表出现很好(Station1,station2,...),并且选择了台站1时,JSON包含“ ID1”。但是当表格更新时,它会在选择组合中显示“id1”,而不是继续显示 Station 的列表。

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

谢谢!

4

1 回答 1

1

我认为您在填充网格时已经遇到了问题。如果您想使用 ids 而不是名称,则应formatter: "select" 另外使用edittype:'select'(请参阅文档)。在这种情况下,在用数据填充网格期间,您必须在网格中放置 id。我的意思是 jqGrid 的输入数据包含id1andid2而不是"Station1"and "Station2"。只有在您能够使用dataUrlwhich provide的情况下<option value="id1">Station1</option>。下一个问题是:你必须设置editoptions.valueorformatoptions.value而不是 usage dataUrl: "getStationList"。所以使用formatter: "select"比较复杂。可以做的是将数据{"id1":"Station1", "id2":"Station2"} 作为主网格数据的一部分发送。一个可以放置{stations: {"id1":"Station1", "id2":"Station2"}}userdataJSON 输入的一部分(请参阅文档)。在beforeProcessing回调内部可以设置formatoptions.value基于userdata.stations. 实际上,getStationList不仅在编辑数据期间,而且在每次填充网格时都会提出请求。

我个人更喜欢在表单中使用 noformatter: "select"并使用 selects

<select>
    <option value="Station1">Station1</option>
    <option value="Station2">Station2</option>
</select>

客户端代码对数据表示的实现细节一无所知。可以用数据“Station1”和“Station2”填充网格,并在编辑网格时发送相同的数据。另一端的服务器将在需要时按名称获取 ID。通常,如果我创建Stations带有“Id”和“Name”之类的列的“查找”表,我会设置

CONSTRAINT UC_Stations_Name UNIQUE NONCLUSTERED (Name ASC)

所以表中有唯一索引,可以通过名称获取 Id。顺便说一下,所有带有 Name 的 Update 语句都与使用 Id 一样快。我在所有内部 SQL 语句中使用 Id,但只将 Name 发送到外部源。以我不需要的方式使用formatter: "select"

于 2013-04-11T12:18:04.817 回答