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