0

asp.net mvc 4 ビューに jqGrid があり、このビューで jqGrid に使用されるタイプを定義します。jqGrid は jQuery タブ内にあります (私は jQuery タブ コンポーネントを持っています)。

タブの jqGrid は次のように挿入されます。

  <div id="jqGrid">
      @Html.Partial("../Grids/_MyGrid")
  </div>

これは、次のように同じビューで ajax 呼び出しから呼び出されます。

@using (Ajax.BeginForm("Search", "Item",
   new AjaxOptions
   {
       HttpMethod = "GET",
       InsertionMode = InsertionMode.Replace,
       UpdateTargetId = "jqGrid",
       OnSuccess = "showGridItems()"
   }))
{
    // My Stuff
}

同じビューで、jqGrid に使用される型を次のように定義しました。

<script type="text/javascript">
    var paramFromView = {
        DeleteAllCaption: '@Resource.CaptionPagerDeleteAll',
        ClearGridUrl: '@Url.Content("~/Item/ClearGridData")',
        DeleteAllConfirmationMessage: '@Resources.Resource.ItemDeleteAllDataConfirmation',
        Url: '@Url.Content("~/Item/GetData")',
        Width: @width,
        Height: @height,
        Caption: '@Resources.Resource.ItemIndexTitle',
        ItemName: '@Resources.Resource.ItemIndexName',
        ItemAddress: '@Resources.Resource.ItemIndexAddress',
        ItemType: '@Resources.Resource.ItemIndexType',
        Actions: '@Resources.Resource.ItemIndexActions',
        PageSize: @pageSize,
    };

</script>

上記の部分ビュー _MyGrid は、同じビューでも次のようになります。

<table id="_itemGrid" cellpadding="0" cellspacing="0">
</table>
<div id="_itemPager" style="text-align: center;">
</div>

ajax 呼び出しが実行され (上記の ajax コードを参照)、結果が成功すると、以下の JavaScript 関数が onsuccess と呼ばれます。

function showGridItems() {
    $('#_itemGrid').jqGrid({
        caption: paramFromView.Caption,
        colNames: ['ID', paramFromView.ItemName, paramFromView.ItemAddress, paramFromView.ItemType, paramFromView.Actions],
        colModel: (...)
}

この関数は js ファイルで定義され、以下のように同じビューに含まれています。

@section scripts
{
    @Content.Script("/Grids/ItemGrid.js", Url)
}

IE8、IE9、IE10 では問題なく動作しますが、IE7 では showGridItems でクラッシュします。エラーは、paramFromView が定義されていないことを示しています! IE8からIE10までは完全に機能していますが、IE7では機能していないため、理由はわかりません。何が起こっていますか?

UPDATED pageSize の後のカンマが原因でした。削除しましたが、現在は機能しています。

4

1 に答える 1

1

スクリプトから最後のコンマ (,) を削除します。

<script type="text/javascript">
var paramFromView = {
    DeleteAllCaption: '@Resource.CaptionPagerDeleteAll',
    ClearGridUrl: '@Url.Content("~/Item/ClearGridData")',
    DeleteAllConfirmationMessage: '@Resources.Resource.ItemDeleteAllDataConfirmation',
    Url: '@Url.Content("~/Item/GetData")',
    Width: @width,
    Height: @height,
    Caption: '@Resources.Resource.ItemIndexTitle',
    ItemName: '@Resources.Resource.ItemIndexName',
    ItemAddress: '@Resources.Resource.ItemIndexAddress',
    ItemType: '@Resources.Resource.ItemIndexType',
    Actions: '@Resources.Resource.ItemIndexActions',
    PageSize: @pageSize
};

于 2013-10-06T18:06:04.587 に答える