使用jqGrid 4.7.1,jquery 1.9.1&在Visual Studio Express 2012 for Web中使用jquery-ui 1.10.4并将页面作为默认网站发布到我的localhost上。 IIS版本是7.5。该包将XML从静态文件加载到可以搜索的网格中。
我可以在任何浏览器中调试VS Express 2012 for Web中的页面而不会出现错误。当我发布它时,它通过右键单击默认网站 - >部署在IIS中。部署 - >导入申请。部署程序包时会采用默认值。由于我在现有应用程序上安装,选项" 否,只需将应用程序包中的文件附加到目标。"被选中。包成功部署,并重新启动IIS。
使用当前版本的Chrome& Firefox没有问题。该网站运作良好&当通过URL http://localhost/myWebSite 访问时,网格在 IE11 中加载没有问题。但是,当通过计算机名称网址访问网站时,我在仅限IE 中收到以下错误: http://mymachine/myWebSite
产生的错误是: SCRIPT5007:无法获得属性&inner;内部HTML'未定义或空引用。 File:jquery.jqGrid.min.js,Line:64,Column:205
加载网格时会产生错误。我显示了网格页眉,页脚和列标题,以及" Loading"生成错误时的消息。使用 localhost 或计算机名称 URL,网格可以很好地使用其他浏览器。其他用户可以使用 http://mymachine/myWebSite URL访问它,只要它们不在IE10或IE11上(我无法测试其他版本的IE)。
我有理由相信jqGrid设置正确。 colModel包含name,xmlmap和&所有列的宽度,除了3.其中两个在其中有索引,sorttype,formatter,formatoptions,第三个在其中有自定义格式化程序(超链接到pdf)。
知道问题可能是什么,或者解决问题的方法?任何输入将不胜感激。
修改
我将其更改为使用jquery.jqGrid.src.js脚本并在Firefox& Chrome没有问题。 IE虽然产生相同的SCRIPT5007错误。它位于第1447行第6列,它位于以下代码行中:
ts.firstElementChild.innerHTML += rowData.join(''); // append to innerHTML of tbody which contains the first row (.jqgfirstrow)
我的jqGrid代码,很简单:
var createGrid = function () {
$("#myGrid").jqGrid({
url: "mydata.xml",
xmlReader: {
repeatitems: false,
root: "Recordset",
row: "Record",
id: "[setEntry]"
},
dataType: "xml",
colNames: [
"Product",
"Manufacturer",
"Date Created",
"Date Modified",
"Image Link",
],
colModel: [
{ name: "PROD_NAME", xmlmap: "Recordset>Record>PROD_NAME" },
{ name: "MFR", xmlmap: "Recordset>Record>MFR", width:175 },
{ name: "DATE_CREATED", xmlmap: "Recordset>Record>DATE_CREATED", width:125, index: "DATE_CREATED", sorttype:"date", formatter: "date", formatoptions: {srcformat:"F d, Y H:i:s", newformat:"Y-m-d H:i:s"}, datefmt:"Y-m-d H:i:s" },
{ name: "DATE_MODIFIED", xmlmap: "Recordset>Record>DATE_MODIFIED", width:125, index: "DATE_MODIFIED", sorttype: "date", formatter: "date", formatoptions: { srcformat: "F d, Y H:i:s", newformat: "Y-m-d H:i:s" }, datefmt: "Y-m-d H:i:s" },
{
name: "IMAGE", xmlmap: "Recordset>Record>IMAGE", width:100,
formatter: function (cellValue, options, rowObject) {
return '<a href="../Work_Documents/' + cellValue + '" target="_blank" >' + cellValue + '</a>';
}
}
],
rowNum: 10,
pager: jQuery("#pager1"),
gridview: true,
rownumbers: false,
height: "auto",
loadonce: true,
autoencode: true,
caption: "MyGrid",
ignoreCase: true, // default is case-sensitive, this makes it case-insensitive
hidegrid: false,
altrows: true,
recordtext: "View {0} - {1} of {2}",
emptyrecords: "No Records to View",
pgtext: "Page {0} of {1}"
}).navGrid("#pager1", { edit: false, add: false, del: false}, {},{},{}, {multipleSearch: true, multipleGroup: true}, {searchtext: "Search" });
};
数据结构如下。属性setEntry是XML文件中的唯一编号。
<Recordset>
<Record setEntry="1">
<PROD_NAME>MyProduct</PROD_NAME>
<MFR>ABC D and Company</MFR>
<DATE_CREATED>September 30, 2014 14:41:36</DATE_CREATED>
<DATE_MODIFIED>September 30, 2014 14:50:55</DATE_MODIFIED>
<IMAGE>abcd.pdf</IMAGE>
</Record>
</Recordset>
同样,使用 http://localhost/myWebSite 网址时出现 NOT 错误,只有在我使用 http://mymachine/myWebSite <时才会发生错误/ em>网址。并且,它仅在IE中出现 - Firefox&amp;无论使用哪种网址,Chrome都无法解决代码问题。
编辑#2
我找到了解决方法here。
我的Site.Master文件进行了更改,更改了其中的 meta 标记。就是这样:
<head runat="server">
<meta charset="utf-8" />
我改为:
<head runat="server">
<meta charset="utf-8" http-equiv="X-UA-Compatible" content="IE=edge" />
似乎在IE中运行 http://mymachine/myWebSite 网址而不会发生错误,并且似乎不会导致其他问题。
这只是一种解决方法,不一定是解决方案。
编辑3
@Oleg - 这是使用链接中jquery-master zip文件中的免费4.7版本的代码。
var createGrid = function () {
$("#myGrid").jqGrid({
url: "mydata.xml",
xmlReader: {
repeatitems: false,
root: "Recordset",
row: "Record",
id: "[setEntry]"
},
datatype: "xml",
colNames: [
"Product",
"Manufacturer",
"Date Created",
"Date Modified",
"Image Link",
],
colModel: [
{ name: "PROD_NAME", xmlmap: "Recordset>Record>PROD_NAME" },
{ name: "MFR", xmlmap: "Recordset>Record>MFR", width:175 },
{ name: "DATE_CREATED", xmlmap: "Recordset>Record>DATE_CREATED", width:125, index: "DATE_CREATED", sorttype:"date", formatter: "date", formatoptions: {srcformat:"F d, Y H:i:s", newformat:"Y-m-d H:i:s"}, datefmt:"Y-m-d H:i:s" },
{ name: "DATE_MODIFIED", xmlmap: "Recordset>Record>DATE_MODIFIED", width:125, index: "DATE_MODIFIED", sorttype: "date", formatter: "date", formatoptions: { srcformat: "F d, Y H:i:s", newformat: "Y-m-d H:i:s" }, datefmt: "Y-m-d H:i:s" },
{
name: "IMAGE", xmlmap: "Recordset>Record>IMAGE", width:100,
formatter: function (cellValue, options, rowObject) {
return '<a href="../Work_Documents/' + cellValue + '" target="_blank" >' + cellValue + '</a>';
}
}
],
rowNum: 10,
pager: true,
gridview: true,
rownumbers: false,
height: "auto",
loadonce: true,
autoencode: true,
caption: "MyGrid",
ignoreCase: true,
hidegrid: false,
altrows: true,
recordtext: "View {0} - {1} of {2}",
emptyrecords: "No Records to View",
pgtext: "Page {0} of {1}",
navOptions: {
edit: false,
add: false,
del: false,
searchtext: "Search"
},
searching: {
multipleSearch: true,
multipleGroup: true
}
}).navGrid();
};
页面的HTML部分现在是:
<div id="UpdatePanel" style ="padding:20px 10px">
<table id="myGrid" border="0" cellpadding="0" cellspacing="0" style="width:100%">
<tr>
<td></td>
</tr>
</table>
</div>
所有链接&amp;脚本:
<link href="Scripts/jquery-ui-1.10.4.custom/css/cupertino/jquery-ui.css" rel="stylesheet" type="text/css" />
<link href="Scripts/jqGrid-master/css/ui.jqgrid.css" rel="stylesheet" type="text/css"/>
<script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.js" type="text/javascript"></script>
<script src="Scripts/jqGrid-master/js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="Scripts/jqGrid-master/js/jquery.jqGrid.src.js" type="text/javascript"></script>
<link href="CustomFormatter.css" rel="stylesheet" type="text/css"/>
以上配置将加载网格没有任何问题。但是,单击搜索按钮时,第622行第3行的 jquery-1.9.1.js 中会出现错误。语句为length = obj.length,
,错误是 TypeError:obj未定义。
答案 0 :(得分:2)
您似乎在不同版本的IE上进行了测试。 IE10-IE11对ts.firstElementChild.innerHTML
的使用应该没有问题,但旧版本的IE 不支持firstElementChild
属性。您应该关注the answer或this one。您可以从here下载固定版本的jqGrid 4.7,或从我的前叉here下载新的免费jqGrid版本的测试版。我计划很快发布新版本的jqGrid。
答案 1 :(得分:0)
也许是IE中的安全区域。转到工具 - &gt;互联网选项;然后到安全选项卡。检查http://mymachine与localhost在同一区域。
您还可以尝试将http://mymachine添加到受信任的网站。
最后,我还有时间将 about:添加到“受信任的站点”区域