日期:2014-05-18 浏览次数:20914 次
/// <summary>
/// 添加目录树节点的展开事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tvDir_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
this.GetSubTreeNodes(e.Node);
}
/// <summary>
/// 获取指定节点下的次两级子节点
/// </summary>
/// <param name="currNode">指定的节点信息</param>
private void GetSubTreeNodes(TreeNode currNode)
{
DataSet ds = new DataSet();
foreach (TreeNode tmpNode in currNode.Nodes)
{
if (tmpNode.Nodes.Count == 0)
{
ModelOperation.ElementList eleListMode = (ModelOperation.ElementList)tmpNode.Tag;
if (!eleListMode.IsElement) // true: 是会后一级
{
ds = eleListDAL.GetElementListByUpList(eleListMode.ListId, ListType);
if ((null != ds) && (ds.Tables.Count > 0))
{
DataTable tmpTab = ds.Tables[0];
foreach (DataRow row in tmpTab.Rows)
{
TreeNode node = new TreeNode(row["listname"].ToString());
ModelOperation.ElementList subeleListMode = this.CreateElementListObj(row); // 创建目录信息的实体对象
node.Tag = subeleListMode;
tmpNode.Nodes.Add(node);
}
}
}
}
}
------解决方案--------------------
在几点展开的时候去加载该节点下的数据
//展开节点前
private void tvReport_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
//如果节点下的没有子节点,返回
if (e.Node.Nodes.Count == 0)
return;
for (int i = 0; i < e.Node.Nodes.Count; i++)
{
//如果是已经加载过的返回
if (e.Node.Nodes[i].Nodes.Count != 0)
{
break;
}
//加载节点下的子节点的子节点
TB_BG bgList = (e.Node.Nodes[i].Tag as TB_BG);
List<TB_BG> currentList = bgManage.GetModelList(" BG_FLXH=" + bgList.BG_XH);
AddNode(e.Node.Nodes[i], false);
}
}