我想动态生成一些JqGrid。为此,我循环遍历列表以创建HTML内容。
@foreach(string clientCode in ViewBag.Codes)
{
<table class="jqgCode" id="jqgCode+@clientCode" cellpadding="0" cellspacing="0"></table>
<div id="pjqgCode+@clientCode" style="text-align:center;"></div>
}
我使用唯一的代码值动态生成网格的id。
基本上,网格将具有相同的格式,只有数据才会更改,而代码是将更改SQL请求的参数。所以我想要做的是检索网格ID,以便在我的控制器中执行操作。
这是我正在尝试做的事情:
<script type="text/javascript">
$(document).ready(function () {
$('.jqgCode').jqGrid({
//url from wich data should be requested
url: '@Url.Action("CodeDetail")',
//type of data
datatype: 'json',
//url access method type
mtype: 'POST',
postData: {code: $(this).attr('id')},
.........
});
});
当我在调试模式下查看动作方法“Code Detail”时,我看到“code”参数中有一个空值。
如何在控制器中输入网格ID。也许有更好的方法来做我想做的事情,所以所有的建议都很好。
提前致谢!
答案 0 :(得分:1)
一个问题是$('.jqgCode')
必须只返回一个元素($('.jqgCode').length
必须为1)。如果你不这样做,你可以使用相同的URL('@Url.Action("CodeDetail")'
)和从服务器返回的数据中的id重复两个网格。
如果$('.jqgCode').length
等于1,您可以重写JavaScript代码,如下所示:
$(document).ready(function () {
var $myGrid = $('.jqgCode'), gridId = $myGrid.attr('id');
$myGrid.jqGrid({
url: '@Url.Action("CodeDetail")',
datatype: 'json',
mtype: 'POST',
postData: {code: gridId},
.........
});
});