{
//取得一个结点和它的父亲结点
node = (TreeNode)enumNodes.Current;
father = node.Parent;
//取得当前结点的所有儿子
TreeNodeCollection sonNodes = node.Nodes;
IEnumerator sonEnumNodes = sonNodes.GetEnumerator();
//递归取得所有儿子结点的编号和显示名称
Hashtable sonResult = GetNodesValue(sonEnumNodes);
if (sonResult.Count !=0)
{
//取得所有儿子结点信息的列举
IDictionaryEnumerator enumDic = sonResult.GetEnumerator();
while(enumDic.MoveNext())
{
//将所有儿子信息添加到存储节点信息的哈希表中
result.Add(enumDic.Key, enumDic.Value);
}
}
result.Add(node.Tag, node.Text);
}
//将保存结点信息的结果返回
return result;
}
/// <summary>
/// 选中某个节点后取得该节点的ID,并显示该ID对应的信息;
/// </summary>
private void trv_Function_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
DataView mydataview = new DataView ();
mydataview.Table= funcDataTable;
mydataview.RowFilter= "功能ID="+ e.Node.Tag.ToString();
foreach ( DataRowView editRow in mydataview)
{
this.txt_Tag.Text=editRow["功能标识"].ToString();
this.txt_Name.Text=editRow["功能名称"].ToString();
this.txt_Detail.Text=editRow["功能简述"].ToString();
this.txt_BelongTo.Text=editRow["所属窗体"].ToString();
;
this.cbo_Type.SelectedValue=editRow["功能类别"].ToString();
this.txt_FunEntity.Text=editRow["功能体"].ToString();
if (editRow["有无界面"].ToString() =="0")
{
this.ckb_IsInterface.Checked=false;
}
else
{
this.ckb_IsInterface.Checked=true;
}
}
}
/// <summary>
/// 初始化树,并把焦点定位在第一个根节点上;
/// </summary>
private void SM_FunctionMaintenance_Load(object sender, System.EventArgs e)
{
InitTreeView(trv_Function.Nodes,ROOT_NODE_VALUE);
//聚焦到树的第一个节点上
trv_Function.SelectedNode=trv_Function.Nodes[0];
trv_Function.Focus();
//折叠所有的树的节点
trv_Function.CollapseAll();
}
private void btn_AddRoot_Click(object sender, System.EventArgs e)
{
SM_AddNewFunction addRootForm=new SM_AddNewFunction(0,DIC_funcType);
//addRootForm窗口关闭时将会对addRootForm.NewFuncItem这个属性进行赋值
addRootForm.ShowDialog();
//如果返回的功能ID不为-1表示增加成功,则
//更新funcDataTable,把新增的节点加到funcDataTable中
if(addRootForm.NewFuncItem.funcID !=-1)
{
DataRow myRow=funcDataTable.NewRow();
myRow["功能ID"] = addRootForm.NewFuncItem.funcID;
myRow["功能标识"] = addRootForm.NewFuncItem.funcTag;
myRow["功能名称"] = addRootForm.NewFuncItem.funcName;
myRow["功能简述"] = addRootForm.NewFuncItem.funcDetail;
myRow["所属窗体"] = addRootForm.NewFuncItem.funcBelongTo;
myRow["有无界面"] = addRootForm.NewFuncItem.funcIsInterface;
myRow["功能类别"] = addRootForm.NewFuncItem.funcType;
myRow["功能体"] = addRootForm.NewFuncItem.funcEntity;
myRow["上级功能ID"] = addRootForm.NewFuncItem.funcFatherID;
myRow["可否展显"] = addRootForm.NewFuncItem.funcIsExpand;
myRow["版本号"] = addRootForm.NewFuncItem.funcVer;
funcDataTable.Rows.Add(myRow);
//在树的根部添加新增加的节点
TreeNode newRootNode=new TreeNode(addRootForm.NewFuncItem.funcName);
newRootNode.Tag=addRootForm.NewFuncItem.funcID.ToString();
trv_Function.Nodes.Add(newRootNode);
//聚焦到新增的节点上
trv_Function.SelectedNode=newRootNode;
}
trv_Function.Focus();
}
private void btn_AddSon_Click(object sender, System.EventArgs e)
{
if(trv_Function.SelectedNode!= null)
{
long newFuncItemFatherID=long.Parse(trv_Function.SelectedNode.Tag.ToString());
SM_AddNewFunction addSonForm=new SM_AddNewFunction(newFuncItemFatherID,DIC_funcType);
//addSonForm窗口关闭时将会对addSonForm.NewFuncItem这个属性进行赋值
addSonForm.ShowDialog();
//如果返回的功能ID不为-1表示增加成功,则
//更新funcDataTable,把新增的节点加到funcDataTable中
if(addSonForm.NewFuncItem.funcID !=-1)
{
DataRow myRow=funcDataTable.NewRow();
myRow["功能ID"] = addSonForm.NewFuncItem.funcID;
myRow["功能标识"] = addSonForm.NewFuncItem.funcTag;
myRow["功能名称"] = addSonForm.NewFuncItem.funcName;
myRow["功能简述"] = addSonForm.NewFuncItem.funcDetail;
myRow["所属窗体"] = addSonForm.NewFuncItem.funcBelongTo;
myRow["有无界面"] = addSonForm.NewFuncItem.funcIsInterface;
myRow["功能类别"] = addSonForm.NewFuncItem.funcType;
myRow["功能体"] = addSonForm.NewFuncItem.funcEntity;
myRow["上级功能ID"] = addSonForm.NewFuncItem.funcFatherID;
myRow["可否展显"] = addSonForm.NewFuncItem.funcIsExpand;
myRow["版本号"] = addSonForm.NewFuncItem.funcVer;
funcDataTable.Rows.Add(myRow);
//在树的选定的节点添加新的子节点
TreeNode newSonNode=new TreeNode(addSonForm.NewFuncItem.funcName);
newSonNode.Tag=addSonForm.NewFuncItem.funcID.ToString();
trv_Function.SelectedNode.Nodes.Add(newSonNode);
//聚焦到新增的节点上
trv_Function.SelectedNode=newSonNode;
}
trv_Function.Focus();
}
else
-
文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netxl/200727/12714_6.html