从 websocket 源创建一个更新的 jqgrid
creating an updating jqgrid from a websocket source
我目前正在从 websocket 源获取数据作为 json 字符串并尝试填充 jqgrid。但是只显示一行,而且也没有数据。
我的 websocket 源是
var json ;
socket.onmessage = function(msg) {
if (! msg || ! msg.data) {
return;
}
counter++;
json = JSON.parse(msg.data);
makeGrid(json);
}
$(document).ready(function() {
makeGrid(json);
}
function makeGrid(data){
var json = [data]; // now this is local data
console.log(json);
$("#jqGrid").jqGrid({
data: json,
datatype: "local",
colNames: [ "name", "value", "unit"],
colModel: [
{ name: "name", width:30 ,height:"auto"},
{ name: "value", width: 15, align: "right",height:"auto" },
{ name: "unit", width: 10, align: "right" ,height:"auto"}
],
pager: "#jqGridPager",
rowNum: 10,
rowList: [10, 20, 30],
rownumbers:true,
viewrecords: true,
gridview: true,
autoencode: true,
caption: "Messages.."
});
};
在我的 html 文件中我有这个..
`<table id="jqGrid"></table>`
<div id="jqGridPager"></div>
请帮忙..
您应该创建网格(调用 $("#jqGrid").jqGrid({...});
)一次。下次您可以使用
重置新数据
var $grid = $("#jqGrid"), // the grid
p = $grid.jqGrid("getGridPagam");
p.data = newDataArray;
$grid.trigger("reloadGrid", [{current: true}]);
或使用 addRowData
将行附加到现有网格。
或者,您可以每次都重新创建 网格。为此,您可以在 创建网格之前使用GridUnload
方法。如果网格仍作为初始 <table id="jqGrid"></table>
存在,它将不执行任何操作。在创建网格 $("#jqGrid").jqGrid({...});
的过程中,最初的 table 将被转换为相对复杂的 div 和 table 结构(例如参见 [=19=])。另一方面,重新加载 table 的主体 比重新创建网格更有效。
补充说明:colMode
中的值height:"auto"
不正确。它将被忽略并改为使用 150
。
我目前正在从 websocket 源获取数据作为 json 字符串并尝试填充 jqgrid。但是只显示一行,而且也没有数据。 我的 websocket 源是
var json ;
socket.onmessage = function(msg) {
if (! msg || ! msg.data) {
return;
}
counter++;
json = JSON.parse(msg.data);
makeGrid(json);
}
$(document).ready(function() {
makeGrid(json);
}
function makeGrid(data){
var json = [data]; // now this is local data
console.log(json);
$("#jqGrid").jqGrid({
data: json,
datatype: "local",
colNames: [ "name", "value", "unit"],
colModel: [
{ name: "name", width:30 ,height:"auto"},
{ name: "value", width: 15, align: "right",height:"auto" },
{ name: "unit", width: 10, align: "right" ,height:"auto"}
],
pager: "#jqGridPager",
rowNum: 10,
rowList: [10, 20, 30],
rownumbers:true,
viewrecords: true,
gridview: true,
autoencode: true,
caption: "Messages.."
});
};
在我的 html 文件中我有这个..
`<table id="jqGrid"></table>`
<div id="jqGridPager"></div>
请帮忙..
您应该创建网格(调用 $("#jqGrid").jqGrid({...});
)一次。下次您可以使用
var $grid = $("#jqGrid"), // the grid
p = $grid.jqGrid("getGridPagam");
p.data = newDataArray;
$grid.trigger("reloadGrid", [{current: true}]);
或使用 addRowData
将行附加到现有网格。
或者,您可以每次都重新创建 网格。为此,您可以在 创建网格之前使用GridUnload
方法。如果网格仍作为初始 <table id="jqGrid"></table>
存在,它将不执行任何操作。在创建网格 $("#jqGrid").jqGrid({...});
的过程中,最初的 table 将被转换为相对复杂的 div 和 table 结构(例如参见 [=19=])。另一方面,重新加载 table 的主体 比重新创建网格更有效。
补充说明:colMode
中的值height:"auto"
不正确。它将被忽略并改为使用 150
。