何か他のことが起こっている必要があります。私はTreeViewでいくつかのパフォーマンステストを行い、はるかに短い時間で40秒後に5000ノードを含む複雑なツリー構造をレンダリングすることができました。 IE8で約3秒でレンダリングされた2000ノードの複合ツリー。もしあなたがあなたのツリーについてもっと詳しい情報を提供できるのであれば、私はもっと助けてくれるかもしれません。
レンダリングされたHTMLの量は、大きなツリーの時間をレンダリングする際の最大の要因の1つです。ページ名を短縮してURL文字列の長さを短くする(ノードがページに直接リンクする場合)、CSSクラスをより高度なスタイルシートの使用方法に置き換えるなど、単純なことでさえかなり高速になります。
以下
_nodeCount
サイズのランダムな複雑なツリーを生成するための私のコードです:
ASPXページはテレビという名前のTreeViewコントロールを持っています
<asp:TreeView ID="tv" runat="server"></asp:TreeView>
コードの後ろに、次のようになります。
private Random _rand = new Random();
private int _nodeCount = 2000;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//create a big tree
var itemCount = 0;
while (itemCount < _nodeCount)
{
//create a parent item
var n = new TreeNode("Node " + itemCount.ToString(), itemCount.ToString());
itemCount++;
tv.Nodes.Add(n);
CreateSubItem(n, ref itemCount);
}
}
}
protected void CreateSubItem(TreeNode parent, ref int itemCount)
{
//chance that we won't create a sub item
if (_rand.Next(2) == 1 || itemCount > _nodeCount)
{
return;
}
var n = new TreeNode("Child Node " + itemCount.ToString(), itemCount.ToString());
itemCount++;
parent.ChildNodes.Add(n);
CreateSubItem(n, ref itemCount);
CreateSubItem(parent, ref itemCount);
}
更新7/20
おそらくあなたはロジックをとることができますアイコンを設定して.NETコードに移動するためのjavascriptでは、これによりページの読み込み時間が大幅に短縮されます。このページ、http://weblogs.asp.net/dannychen/archive/2006/01/25/436454.aspxは、TreeNodeのレンダリングをカスタマイズする方法を示しています。多分それはあなたのための良い出発地になるかもしれません。
ツリービューコントロールを表示できるので、設定したプロパティなどを確認できますか? – ChristiaanV
これは通常のaspツリービューコントロールですが、唯一のことは、レンダリング時に実行されるjavascriptがたくさんあることです。 IE8では40秒間、FFでは4〜5秒かかります。 – Ankit
ユーザビリティの観点からは、2000ノードのツリービューを含むページは無駄になります。 – IrishChieftain