jqGridを無効にする方法を探していて、いくつか見つけました:
- BlockUI プラグインの使用: http://jquery.malsup.com/block/
- jqGrid オプションの使用: loadui を使用して「block」に設定します。
最初のオプションは優れた解決策であり(私はまだ試していません)、おそらくより明確ですが、オブジェクトのプロパティを設定することでできる限りプラグインの使用を避けたいので、2番目のオプションを試していますが、うまくいきません私、jqGridは引き続き有効です。
私のasp.net mvc 4ビューの私のjqgrid:
<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...'
});
}
上記のコードでは、showGrid関数にdisabledパラメーターとして渡そうとしましたが、変数をそれぞれ「ブロック」または「有効」に設定するのがtrueまたはfalseであるかに応じて、この変数でloaduiプロパティを設定しましたが、動作していません。
Content.cshtml:
@using System.Web.Mvc;
@helper Script(string scriptName, UrlHelper url)
{
<script src="@url.Content(string.Format("~/Scripts/{0}", scriptName))" type="text/javascript"></script>
}
何か案は?