asp.Nettreeview非同期ロード
10914 ワード
TreeViewコントロールを使用する場合、データ量が大きすぎると、このTreeViewコントロールのロードが遅くなり、ロードに失敗することもあります.
TreeViewコントロールを使用して大量のデータをロードするために、非同期遅延ロードTreeViewを使用します.
TreeViewの各ノードの前に「+」の番号があります.これをクリックして「+」の番号がトリガーされるイベントはOnTreeNodeExpanded=「TreeView 1_TreeNodeExpanded」です.TreeViewのロードを開始したばかりの頃、ノードの下に
サブノードがある場合は、サブノードを1つだけロードします.「+」をクリックし、OnTreeNodeExpandedイベントをトリガーしたときに、そのノードの下の
すべてのサブノード、これで速度が速くなります.
aspxコード
aspx.csコード
TreeViewコントロールを使用して大量のデータをロードするために、非同期遅延ロードTreeViewを使用します.
TreeViewの各ノードの前に「+」の番号があります.これをクリックして「+」の番号がトリガーされるイベントはOnTreeNodeExpanded=「TreeView 1_TreeNodeExpanded」です.TreeViewのロードを開始したばかりの頃、ノードの下に
サブノードがある場合は、サブノードを1つだけロードします.「+」をクリックし、OnTreeNodeExpandedイベントをトリガーしたときに、そのノードの下の
すべてのサブノード、これで速度が速くなります.
aspxコード
<asp:TreeView ID="TreeView1" runat="server" Font-Size="Medium" OnTreeNodeExpanded="TreeView1_TreeNodeExpanded" ForeColor="LightSlateGray" LeafNodeStyle-ForeColor="#3333ff" ShowLines="true" ExpandDepth="1">
<SelectedNodeStyle CssClass="selectNode" />
</asp:TreeView>
aspx.csコード
#region wsw
private void LoadNewTree()
{
DataTable dtp = pagBLL.GetList(" superfuncid=0 order by sort asc").Tables[0];
if (dtp.Rows.Count > 0)
{
//
this.TreeView1.Nodes.Clear();
for (int i = 0; i < dtp.Rows.Count; i++)
{
//
TreeNode Node = new TreeNode();
Node.Text = dtp.Rows[i]["funcname"].ToString();
Node.Value = dtp.Rows[i]["pagefuncid"].ToString();
Node.ToolTip = dtp.Rows[i]["funcurl"].ToString();
Node.ImageUrl = "../../" + dtp.Rows[i]["imageurl"].ToString();
this.TreeView1.Nodes.Add(Node);// , TreeView1
this.LoadAddSign(Node.ChildNodes,Convert.ToInt32(dtp.Rows[i]["pagefuncid"].ToString()));//wsw
TreeView1.CollapseAll();
}
}
}
/// <summary>
/// + , 。
/// </summary>
/// <param name="Conn"></param>
/// <param name="tn"></param>
/// <param name="DeptId"></param>
private void LoadAddSign( TreeNodeCollection tn, int DeptId) //wsw
{
DataTable table = pagBLL.GetList(" superfuncid=" + DeptId + " order by sort asc").Tables[0];
if (table.Rows.Count > 0)
{
// " "1 , +
tn.Add(new TreeNode());
}
}
/// <summary>
/// +
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
TreeNode node = e.Node;
if (node.Expanded == true)
{
string bm = e.Node.Value.ToString();//wsw
DataTable table = pagBLL.GetList(" superfuncid=" + bm + " order by sort asc").Tables[0];
node.ChildNodes.Clear(); // 。
if (table.Rows.Count > 0)
{
for (int i = 0; i < table.Rows.Count; i++)
{
TreeNode Node = new TreeNode();
Node.Text = table.Rows[i]["funcname"].ToString();
Node.Value = table.Rows[i]["pagefuncid"].ToString();
Node.ToolTip = table.Rows[i]["funcurl"].ToString();
Node.ImageUrl = "../../" + table.Rows[i]["imageurl"].ToString();
node.ChildNodes.Add(Node);// , TreeView1
this.LoadAddSign(Node.ChildNodes, Convert.ToInt32(table.Rows[i]["pagefuncid"].ToString()));//wsw
}
}
}
}
#endregion