Жаль, что вы не публикуете полный код JavaScript, который вы используете. Так что я могу только догадываться, что происходит.
Например, если вы определите myData
как массив ([...]
) вместо объекта ({...}
), параметр позиции будет перезаписан значением "last".
jqGrid - это проект с открытым исходным кодом, и вы можете проверить, что именно делает addRowData
функция здесь . Вы можете точно увидеть, в какой ситуации будет использоваться параметр позиции «последний».
Если вы добавите свой вопрос с кодом, который можно использовать для воспроизведения проблемы, которую вы описываете, другие могут проверить код и либо найти ошибку в jqGrid, либо найти ошибку в вашем коде. В обеих ситуациях у вас есть хороший шанс стать победителем.
ОБНОВЛЕНО У кода, который вы разместили, есть небольшие проблемы.
Сначала вы должны удалить запятую перед ']' в определении colModel
.
Во-вторых, newData
- это массив, поэтому последний параметр будет заменен с «первого» на «последний».
Некоторые другие небольшие, но важные проблемы: вы должны использовать <!DOCTYPE html ...>
в начале вашего HTML-кода, поместить код JavaScript внутри //<![CDATA[
... //]]>
и вставить <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
в заголовок HTML.
Фиксированный код будет следующим
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Demonstration how programatically select grid row which are not on the first page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/redmond/jquery-ui.css" />
<link rel="stylesheet" type="text/css" href="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-3.8.1/css/ui.jqgrid.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-3.8.1/js/i18n/grid.locale-en.js"></script>
<script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-3.8.1/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function () {
var grid = jQuery("#myTable");
grid.jqGrid({
datatype: "local",
colNames:['Data ID','Device'],
colModel:[
{name:'DATA_ID',index:'DATA_ID', sorttype:"int", width:22, align:"center", sortable:false},
{name:'DATA_DN',index:'DATA_DN', width:60, align:"center", sortable:false},
],
width: "1216"
});
var myData = [{"DATA_ID":"9", "DATA_DN": "sony"}, {"DATA_ID":"10", "DATA_DN": "panasonic"}];
var newData = [{"DATA_ID":"0", "DATA_DN": "national"}, {"DATA_ID":"1", "DATA_DN": "samsung"}];
for(var i=0;i<myData.length;i++) {
grid.jqGrid('addRowData', i, myData[i]);
}
for (i=0;i<newData.length;i++) {
grid.jqGrid('addRowData', myData.length+i, newData[newData.length-i-1], "first");
}
//grid.trigger("reloadGrid");
});
//]]>
</script>
</head>
<body>
<table id="myTable"><tr><td/></tr></table>
</body>
</html>
см. Также в прямом эфире здесь . Как вы можете проверить с помощью W3 Validator последняя версия HTML-кода: правильный .
Тем не менее, рекомендуется использовать дополнительный скрытый столбец, который будет использоваться для сортировки.