如何递归创建Ttee的Node
来源:互联网 发布:2016年就业数据 编辑:程序博客网 时间:2024/06/04 19:48
/// <summary>
/// 创建目录树
/// </summary>
/// <param name="selectNode">当前目录节点,为null时表示创建根节点目录</param>
/// <param name="iCatalogID">字典数据对象类型</param>
private void CreateCategoriesTree(Node selectNode, int iCatalogID)
{
NodeCollection nodes;
if (selectNode == null)
nodes = trvCategories.Nodes;
else
{
nodes = selectNode.Nodes;
DataRow row = selectNode.Tag as DataRow;
}
nodes.Clear();
DataTable dt = ManualDBProc.GetManualCategoriesTree(iCatalogID);
foreach (DataRow row in dt.Rows)
{
Node node = new Node();
node.Text = Tools.ToString(row["Title"]);
node.Tag = Tools.ToInt32(row["CatalogID"]);
nodes.Add(node);
if (Tools.ToInt32(row["SubTitleCount"]) > 0)
{
//有下级接点,加载下有节点
CreateCategoriesTree(node, Tools.ToInt32(row["CatalogID"]));
//展开结点显示
node.Expand();
}
}
}
/// <summary>
/// 显示目录树/// </summary>
private void ShowCategoriesTree()
{
if (ManualDBProc.GetManualCategoriesTreeDataTable(Tools.ToString(cmbSysName.Value), cmbDocType.SelectedIndex))
{
trvCategories.BeginUpdate();
trvCategories.Nodes.Clear();
CreateCategoriesTree(null, 0);
trvCategories.EndUpdate();
if (trvCategories.Nodes.Count > 0)
{
//显示第一个节点
trvCategories.SelectedNode = trvCategories.Nodes[0];
}
}
}
private void miTitleTreeCreate_Click(object sender, EventArgs e)
{
FormInputDlg frm = new FormInputDlg("请输入目录名称", "");
if (frm.ShowDialog() == DialogResult.OK)
{
String sNodeName = frm.GetInput();
Node n = trvCategories.SelectedNode;
int iParentID = 0;
int iOrders = 0;
if (n == null || n.Parent == null)
{
iParentID = 0;
iOrders = trvCategories.Nodes.Count + 1;
}
else
{
iParentID = Tools.ToInt32(n.Parent.Tag);
iOrders = n.LastNode.Index + 1;
}
int iCatalogID = 0;
if (ManualDBProc.UpdateCategoriesTree(m_sProductID, m_iDocType, ref iCatalogID, iParentID, sNodeName, iOrders, 'A'))
{
Node add = new Node();
add.Text = sNodeName;
add.Tag = iCatalogID;
if (n == null || n.Parent == null)
{
trvCategories.Nodes.Add(add);
}
else
{
n.Parent.Nodes.Add(add);
}
FrmMsgBolloon.ShowAlert("新建目录标题成功!");
}
}
}
private void miTitleTreeCreateSub_Click(object sender, EventArgs e)
{
if (trvCategories.SelectedNode == null)
return;
FormInputDlg frm = new FormInputDlg("请输入目录名称", "");
if (frm.ShowDialog() == DialogResult.OK)
{
String sNodeName = frm.GetInput();
Node n = trvCategories.SelectedNode;
int iParentID = Tools.ToInt32(n.Tag);
int iOrders = 0;
if(n.LastNode != null)
iOrders = n.LastNode.Index + 1;
int iCatalogID = 0;
if (ManualDBProc.UpdateCategoriesTree(m_sProductID, m_iDocType, ref iCatalogID, iParentID, sNodeName, iOrders, 'A'))
{
Node add = new Node();
add.Text = sNodeName;
add.Tag = iCatalogID;
n.Nodes.Add(add);
FrmMsgBolloon.ShowAlert("新建下级目录标题成功!");
}
}
}
- 如何递归创建Ttee的Node
- 【WM】如何递归创建目录
- 如何创建 Node.js 项目工程
- 树的递归创建和递归遍历
- 如何由数组递归创建树
- SQL Server如何创建递归函数
- 递归创建文件夹的例子
- 如何退出node的命令行
- node.js 使用createServer创建最基础的node应用。
- js 创建一个新的node
- Node.js 创建的第一个应用
- 创建Node.js的Hello World程序
- 创建Node.js 的npm应用模块
- 使用Node的 express创建项目
- node-red 自定义节点的创建
- 用vscode创建typescript的node工程
- 如何使用Grunt脚手架快速创建Node.js项目
- 如何在Ubuntu上创建Node.js Addon
- 去掉Android新建项目的顶部标题-application:Theme
- iOS6、7、8、9区别和新特性
- 第一个struts2程序
- Vue.js数据绑定
- python抓取糗事百科段子 图片
- 如何递归创建Ttee的Node
- 将数组中值为0的项去掉,将不为0的值存入一个新的数组,生成新数组
- spring MVC的实现原理
- linux文件I/O编程
- XMl解析的几种方式
- 自定义Toast
- Edittext中输入@符号关联联系人及快速索引
- 程序员到大数据人才 只需这几步
- 两个int类型的数组合并为新的数组