我一直在寻找有关如何禁用 jqGrid 的方法,我发现了一些:
- 使用 BlockUI 插件:http: //jquery.malsup.com/block/
- 使用 jqGrid 选项:loadui 并将其设置为 'block'
第一个选项是一个很好的解决方案(我还没有尝试过),它可能更清楚,但我想尽可能避免使用插件,只要我可以通过设置对象属性来做到这一点,所以我正在尝试第二个选项,但它不适用于我,jqGrid 继续启用。
我的 jqgrid 在我的 asp.net mvc 4 视图中:
<div id="jqGrid">
@Html.Partial("../Grids/_PartialGrid")
</div>
和_PartialGrid:
<table id="_compGrid" cellpadding="0" cellspacing="0">
</table>
<div id="_compPager" style="text-align: center;">
</div>
所以在视图中,在脚本部分中,我根据模型中属性的状态执行下面的文档准备(如果 id>0,我将禁用它,否则我在页面重新加载时启用它):
@section scripts
{
@Content.Script("/Grids/CompGrid.js", Url) // Content is a helper javascript loader (see end of this post)
}
<script type="text/javascript">
$(document).ready(function () {
showGrid();
var disableCompGrid = @Html.Raw(Json.Encode(Model.ItemCompViewModel));
setStatusCompGrid(disableCompGrid.id > 0);
}
</script>
CompGrid.js 是:
function showGrid() {
$('#_compGrid').jqGrid({
caption: paramFromView.Caption,
colNames: ....
}
function setStatusCompGrid(disabled) {
$('#_compGrid').jqGrid({
loadui: 'block',
loadtext: 'Processing...'
});
}
在上面的代码中,我也尝试将参数 disabled 作为参数传递给 showGrid 函数,并根据将变量分别设置为“block”或“enable”是真还是假,然后使用此变量设置 loadui 属性,但它是不工作。
内容.cshtml:
@using System.Web.Mvc;
@helper Script(string scriptName, UrlHelper url)
{
<script src="@url.Content(string.Format("~/Scripts/{0}", scriptName))" type="text/javascript"></script>
}
有任何想法吗?