/// <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("新建下级目录标题成功!");
}
}
}