2014-02-09 67 views
1

我正在使用jqGrid 4.5.4。我的ASP.NET MVC視圖中有一個jqGrid javascript錯誤。 Visual Studio中捕獲的錯誤:jQ Grid無法獲取未定義的屬性「整數」或空引用錯誤

無法獲取未定義或空引用錯誤

的特性「整數」如果我在JavaScript調試器打破,並期待在視圖,數據加載,但與一個盒子說未定義。

我跟着文檔,並確保腳本加載在視圖/佈局輸出。

筆者認爲:

@{ 
    Layout = "~/Views/Shared/_Admin.cshtml"; 
} 

<h2>Manage Posts, Categories and Tags</h2> 
<div id="tabs"> 
    <ul> 
     <li><a href="#tab-posts">Posts</a></li> 
     <li><a href="#tab-cats">Categories</a></li> 
     <li><a href="#tab-tags">Tags</a></li> 
     <li><a href="#tab-comments">Comments</a></li> 

    </ul> 

    <div id="tab-posts" class="tab"> 
     <table id="tablePosts" class="grid"> 
     </table> 
     <div id="pagerPosts" class="pager"> 
     </div> 
    </div> 
    <div id="tab-cats" class="tab"> 
     <table id="tableCats" class="grid"> 
     </table> 
     <div id="pagerCats" class="pager"> 
     </div> 
    </div> 
    <div id="tab-tags" class="tab"> 
     <table id="tableTags" class="grid"> 
     </table> 
     <div id="pagerTags" class="pager"> 
     </div> 
    </div> 
    <div id="tab-comments" class="tab"> 
     <table id="tableComments" class="grid"> 
     </table> 
     <div id="pagerComments" class="pager"> 
     </div> 
    </div> 
</div> 

我的佈局文件的頭部(_Admin.cshtml)

<head> 
<meta name="viewport" content="width=device-width" /> 
<title>Manage Posts, Categories and Tags</title> 
@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryui") 
<link href="../../Content/themes/simple/jquery-ui-1.10.4.custom.css" rel="stylesheet" 
    type="text/css" /> 
<link href="../../Scripts/ui.jqgrid.css" rel="stylesheet" type="text/css" /> 
<script src="../../Scripts/grid.locale-en.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery.jqGrid.src.js" type="text/javascript"></script> 
<link href="../../Content/themes/simple/simple.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="~/Scripts/admin.js"></script> 
</head> 

我的控制器方法:

[Authorize] 
    public ContentResult Posts(JQGridViewModel gridparams) 
    { 
     var posts = _postRepository.AdminPosts(gridparams.page - 1, gridparams.rows, gridparams.sidx, gridparams.sord == "asc"); 
     var totalPosts = _postRepository.TotalPosts; 

     return Content(JsonConvert.SerializeObject(new 
     { 
      page = gridparams.page, 
      records = totalPosts, 
      rows = posts, 
      total = Math.Ceiling(Convert.ToDouble(totalPosts)/gridparams.rows) 
     }, new CustomDateTimeConverter()), "application/json"); 
    } 

    public class CustomDateTimeConverter:Newtonsoft.Json.Converters.DateTimeConverterBase 
    { 
     public override object ReadJson(JsonReader reader, Type objectType, 
      object existingValue, JsonSerializer serializer) 
     { 
      throw new NotImplementedException(); 
     } 

     public override void WriteJson(JsonWriter writer, object value, 
      JsonSerializer serializer) 
     { 
      writer.WriteValue(value.ToString()); 
     } 
    } 

在管理的初始化腳本。 js

$(function() { 
     $(gridName).jqGrid({ 
     // server url and other ajax stuff 
     url: '/Admin/Posts', 
     datatype: 'json', 
     mtype: 'GET', 

     height: 'auto', 

     // columns 
     colNames: colNames, 
     colModel: columns, 

     // pagination options 
     toppager: true, 
     pager: pagerName, 
     rowNum: 10, 
     rowList: [10, 20, 30], 

     // row number column 
     rownumbers: true, 
     rownumWidth: 40, 

     // default sorting 
     sortname: 'PostedOn', 
     sortorder: 'desc', 

     // display the no. of records message 
     viewrecords: true, 

     jsonReader: { repeatitems: false } 
    }); 
}); 

回答

1

您應該確認grid.locale-en.js確實存在於與jquery.jqGrid.src.js相同的目錄中。通常,所有語言文件都在子目錄i18n中。

以任何方式錯誤消息

無法如果加載jquery.jqGrid.src.js(或jquery.jqGrid.min.js而不加載來獲得未定義或空引用錯誤的屬性「整數」

通常存在語言特定的文件,如grid.locale-en.js

+0

是的,腳本是在同一目錄。 – arod

+0

@arod:你使用'jquery.jqGrid.src.js'。所以你應該在發生錯誤的地方張貼行號。如果'grid.locale-en.js'不會加載(錯誤的路徑或沒有權限等等),你會在[行號1801]中出現錯誤(https://github.com/tonytomov/jqGrid/blob/ v4.5.4/js/grid.base.js#L1801),因爲'$ .jgrid.formatter'在'grid.locale-en.js'中定義。如果你要評論(臨時刪除)'toppager:true'和'pager:pagerName',網格將不會有任何尋呼機,你應該看不到錯誤。 – Oleg

+0

Oleg,當Visual Studio在調試我的Javascript時,它似乎動態縮小,所以文本非常神祕。所以我無法提供一個有意義的行號。有沒有辦法解決這個問題? 註釋掉這兩行代碼確實可以刪除分頁元素,而不會出現問題。 本地化文件肯定是加載在我的網頁中。我在這裏下載了它:http://www.trirand.com/blog/?page_id=6 謝謝 – arod

0

我已解決此問題。包含網格的JQueryUI選項卡不能正常工作,也不會隱藏選項卡集中的其他div。一旦我得到標籤工作正常jqGrid呈現完美

相關問題