我在ASP.NET页面中有一个treeView控件,它将在不同级别加载最多12,000个节点。 例如:
节点1
节点1.1 ...
节点1.400
节点1.400.1
...
根据这个链接:
http://msdn.microsoft.com/en-us/library/ms529261.aspx
节点限制为1000.这是正确的还是取决于可用内存(请指定值)?
假设它是正确的。有没有办法将4600个子节点分成300块?我想如果使用虚拟节点(上一个/下一个导航)来导航块将很容易加载html页面。
C#中的示例代码将不胜感激。 (或者如果你不能将它翻译成C#,则为VB.NET)
答案 0 :(得分:1)
TreeNode node;
node = new TreeNode(Session["Type"].ToString(), Session["Type"].ToString(), "", "Sub_cat.aspx?MainCat=" + Session["Type"].ToString(), "");
node.SelectAction = TreeNodeSelectAction.SelectExpand;
TreeView1.Nodes.Add(node);
string str1 = "select * from sub_cat where main_cat='"+Session["Type"].ToString() +"'"; ///+ node.Text + "'";
dt1 = db.gettable(str1);
for(int x=0;x<dt1.Rows.Count;x++)
{
//Session["subcat"] = dt1.Rows[x]["sub_cat"].ToString();
string sub = dt1.Rows[x]["sub_cat"].ToString();
TreeNode node1 = new TreeNode(dt1.Rows[x]["sub_cat"].ToString(), dt1.Rows[x]["sub_cat"].ToString(), "", "Product_collection.aspx?sub_cat=" + sub, "");
node1.SelectAction = TreeNodeSelectAction.SelectExpand;
//TreeView1.Nodes.Add(node1);
node.ChildNodes.Add(node1);
string str2 = "select * from product_master where main_cat='" + Session["Type"].ToString() + "' and sub_cat='" + node1.Text + "' order by product_code asc";
dt2 = db.gettable(str2);
for(int y=0;y<dt2.Rows.Count;y++)
{
// Session["product_code"]=dt2.Rows[y]["product_code"].ToString();
string code = dt2.Rows[y]["product_code"].ToString();
TreeNode node2 = new TreeNode(dt2.Rows[y]["product_code"].ToString(), dt2.Rows[y]["product_code"].ToString(), "", "prod_desc.aspx?product_code=" + code, "");
node2.SelectAction= TreeNodeSelectAction.SelectExpand;
node1.ChildNodes.Add(node2);
}
}
答案 1 :(得分:0)
是的,这是真的我在阅读此链接http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/dcacb090-73a2-4845-ab19-e280ea373ffb
后几乎已经检查过了答案 2 :(得分:0)
当用户扩展节点级别时,您不应该一次加载超过可见节点,您可以/可以/应该/必须使用按需加载来加载子级,等等只在需要时递归。
不要重载页面渲染加载所有节点,没有任何意义。
搜索按需加载的asp.net treeview和类似的...
答案 3 :(得分:0)
最后,我们使用Obout treeview,因为它没有我的问题所述的asp.net树视图的限制,而且我可以加载1000个节点没有问题,它的虚拟加载功能很棒