jqGridツリーノードは、jsonデータを使用してサーバーから読み込まれます。ノード内をクリックすると、サーバーから子ノードが読み込まれます。 以下のコードは、ページが読み込まれたときに開いたツリーノードを復元するために使用されます。 ツリー内に常に1つのノードのみが開きます。 コントローラはノードidをautoClicked配列にアサートし、gridCompleteはこのパスを使用してノードをオープンします。 これは、複数のサーバー要求が複数回グリッドをグリッド化するため、ページのロード時にグリッドのフラッシングを引き起こします。 グリッドの点滅を無効にするにはどうすればよいですか? 複数のjqGridビルドを防止し、find jqGridツリーのみを表示できますか?リモートでポピュレートされた永続化jqgridツリーノードの点滅を削除する方法
回答で Send expanded TreeGrid Nodes in cookie は、完全に配置されたグリッドのみで動作します。
var autoClicked=[<%= Model.Path() %>];
$(function() {
var grid = $("#tree-grid");
grid.jqGrid({
gridComplete: function() {
setTimeout(function() {
var id = autoClicked.shift();
var rData = grid.getGridParam('data');
var data = null;
for (var i = 0; i < rData.length; i++) {
if (id == rData[i].id) {
data = rData[i];
break;
}
}
if (data == null)
return;
grid.expandRow(data);
grid.expandNode(data);
}, 0);
},
url: '<%= ResolveUrl("~/Store/GridData")%>',
datatype: "json",
mtype: "POST",
height: "auto",
loadui: "disable",
treeGridModel: "adjacency",
colModel: [
{ name: "id", width: 1, hidden: true, key: true },
{ name: "menu", classes: "handcursor" },
{ name: "url", width: 1, hidden: true }
],
autowidth: true,
treeGrid: true,
ExpandColumn: "menu",
rowNum: 200,
ExpandColClick: true,
onSelectRow: function (rowid) {
var treedata = grid.jqGrid('getRowData', rowid);
window.location = treedata.url;
}
}
);
});
コントローラ:あなたの場所に
public string Path()
{
Artomlii node = Artomliik;
string res = node.Artomaliik.ToString();
while (!Core.IsNullOrWhiteSpace(node.Treeparent))
{
// retrieve parent node
node = MyDataContext.ExecQuery<Artomlii>(@"select * from artomlii where treeorder={0}", node.Treeparent).FirstOrDefault();
if (node == null)
break;
res = node.Artomaliik.ToString() + "," + res;
}
return res;
}
ありがとうございます。これは素晴らしい考えです。 – Andrus
@Andrus:あなたは大歓迎です! – Oleg