有一个网格,需要在同一列中有具有不同选项值的选择框。例如,在为解决此问题而设置的测试网格中,其概念是使用选择框从电影中选择一个演员。每行都有不同电影的数据。在每一行中,actors 列都有一个不同的actors 列表,需要使用这些actors 来动态填充该行的选择框。演员列表设置为 CSV,逗号分隔值,在数据库中:IE、Clint Eastwood、Tom Cruz、Vin Diesel。
从完成的测试来看,一旦设置了列模型,每次网格加载只执行一次,这意味着您只能为列中的所有选择框获得一组选项。通过设置循环块以在填充网格的 php 文件(在本例中为 myfirtgridajax.php)中生成正确的代码,并显示为函数,已成功将具有所需值的 html 字符串作为返回数据传递给网格具有正确值的选择框,它的行为不像在列模型中设置的选择框
{... edittype:select, edit options:{value:{CE:'Clint Eastwood'... }}}
需要的是从将在数据库中设置另一个值的选择框生成一个 POST 请求 onChange 或具有相同结果的东西。也就是说,如果选择了 Clint Eastwood,则需要生成一个 POST 请求以将该值传递给另一个 php 页面进行处理。
我的问题是,虽然它看起来像在通过传递 html 字符串创建的选择框上设置事件侦听器会起作用,但有没有更好的方法来做到这一点?
<script>
$(function () {
$('#displayresultstable').jqGrid({
url:'../gridcalls/myfirstgridajax.php',
datatype:'json',
mtype: 'GET',
colNames:['ID', 'movie', 'topic', 'rating','actors'],
colModel :[
{name:'ID', index:'ID', width:50},
{name:'movie', index:'movie', width:200, editable:true},
{name:'topic', index:'topic', width:350, editable:true},
{name:'rating', index:'rating', width:50, editable:true },
{name:'actors', index:'actors', width:350, editable:true },
],
pager: '#pager',
rowNum:10,
height: 'auto',
rowList:[5,10,15],
sortname:'ID',
sortorder: 'desc',
viewrecords: true,
gridview: true,
cellEdit: true,
cellurl:'../editfirstgridajax.php',
caption: 'Movie Greats'
});
$('#displayresultstable').jqGrid('navGrid','#pager', {view: true});
});
</script>
<table id='displayresultstable'>
<tr><td></td></tr>
</table>
<div id='pager'></div>
谢谢