Phải có điều gì đó khác đang diễn ra. Tôi đã thực hiện một số thử nghiệm hiệu năng trên TreeView và có thể kết xuất một cấu trúc cây phức tạp chứa 5000 nút trong thời gian ít hơn 40 giây. Cây phức hợp nút 2000 được hiển thị trong khoảng 3 giây trong IE8. Nếu bạn có thể cung cấp thêm một số chi tiết về cây của bạn, có lẽ tôi có thể cung cấp thêm trợ giúp.
Tôi đã đọc rằng số lượng HTML được hiển thị là một trong những yếu tố lớn nhất khi nói đến thời gian hiển thị trên cây lớn. điều thậm chí đơn giản như giảm chiều dài của một chuỗi URL bằng cách rút ngắn tên trang (nếu nút của bạn liên kết trực tiếp đến trang) hoặc thay thế các lớp CSS với nhiều kỹ thuật sử dụng style sheet nâng cao có thể làm cho nó nhanh hơn đáng kể.
Dưới đây là mã của tôi để tạo ra một cây phức tạp ngẫu nhiên của _nodeCount
kích thước:
ASPX trang có một TreeView tên tv:
<asp:TreeView ID="tv" runat="server"></asp:TreeView>
Mã Đằng sau trông giống như sau:
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);
}
Cập nhật 7/20
Có lẽ bạn có thể thực hiện logic trong javascript của bạn để thiết lập các biểu tượng và di chuyển nó vào mã .NET, điều này sẽ làm giảm đáng kể thời gian tải trang. Trang này, http://weblogs.asp.net/dannychen/archive/2006/01/25/436454.aspx, cho biết cách tùy chỉnh hiển thị của TreeNode; có lẽ nó có thể là một nơi khởi đầu tốt cho bạn.
bạn có thể chỉ cho kiểm soát TreeView bạn để chúng tôi có thể xem sản phẩm bạn đã đặt vv? – ChristiaanV
Nó là một điều khiển asp treeview bình thường nhưng điều duy nhất là có rất nhiều javascript chạy trên render. Trang mất 4-5 giây trên FF trong khi 40 giây trên IE8. – Ankit
Từ góc độ khả năng sử dụng, một trang có chứa một lượt xem tre với 2000 nút bên cạnh vô dụng. – IrishChieftain