我有一个由数据库填充的网格。其中一列是另一个表中 2 列的集合。在本例中,它是团队的位置和名称。但是,当我单击编辑并填充编辑表单时,它总是在下拉列表中选择第一个团队,而不是数据库中的实际团队。
以下是一些相关代码:
jQuery("#listPlayer").jqGrid({
url:'../controller/playerGrid.php',
datatype: "json",
colNames:['ID','First Name','Last Name', 'Team'],
colModel:[
{name:'id', index:'id', width:20, editable:false, hidden:true},
{name:'first_name', index:'first_name', width:80, editable:true, editrules: {required: true}},
{name:'last_name', index:'last_name', width:80, editable:true, editrules: {required: true}},
{name:'idTeam', index:'idTeam', width:50, editable:true, editrules: {required: true}, edittype: 'select', editoptions: { dataUrl: "../controller/listTable.php?query=team" } }
],
rowNum:50,
rowTotal: 2000,
rowList : [20,30,50],
mtype: "POST",
rownumbers: true,
rownumWidth: 40,
gridview: true,
pager: '#pagerPlayer',
sortname: 'last_name',
viewrecords: true,
sortorder: "asc",
caption: "Player Manager",
editurl: "../controller/playerEditGrid.php"
这就是 listTable.php 中的 SQL 查询的样子:
SELECT t.id, CONCAT(t.location, ' ', t.name,' (', l.abbr, ')' ) as idTeam FROM team t, league l WHERE t.idLeague = l.id ORDER BY t.location
我知道问题在于它是一个串联而不是单列,但我相信有办法解决它......我只是不知道。
我没有以这种方式使用它,但 jqgrid 帮助的以下部分应该适用于您的情况:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules#select
从数据网址返回的应该已经是一个有效的 HTML 选择元素,例如:
<select>
<option value='1'>One</option>
<option value='2'>Two</option>
...
</select>
参考 3.在上面的 url 中设置编辑选项 dataUrl 参数。
希望这有帮助!