383 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			383 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Data;
 | |
| using System.Drawing;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| using DCSoft.Writer.Data;
 | |
| 
 | |
| namespace DocumentManagement
 | |
| {
 | |
|     public partial class frmKB : Form
 | |
|     {
 | |
|         public frmKB()
 | |
|         {
 | |
|             InitializeComponent();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 刷新知识库
 | |
|         /// </summary>
 | |
|         public void RefreshKB()
 | |
|         {
 | |
|             //DocumentDAL.LoadKBLibaray();
 | |
|             tvwKB.Nodes.Clear();
 | |
|             DocumentDAL.LoadKBLibaray();
 | |
|             tvwKB.KBLibrary = DocumentDAL.Lib;
 | |
|             tvwKB.RefreshView();
 | |
|             tvwKB.ExpandAll();
 | |
| 
 | |
|             tvwKB.SelectedNode = tvwKB.Nodes[0];
 | |
|         }
 | |
| 
 | |
|         private void btnClear_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             txtName.Text = "";
 | |
|             txtName.Tag = null;
 | |
|             txtParentName.Text = "";
 | |
|             txtParentName.Tag = null;
 | |
|             dgvItems.Rows.Clear();
 | |
|             rtbSQL.Text = "";
 | |
|             txtReflection.Text = "";
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 新建同级节点
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         private void 新建目录ToolStripMenuItem_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (tvwKB.SelectedNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("请选择一个节点!");
 | |
|                 return;
 | |
|             }
 | |
|             btnClear_Click(null, null);
 | |
|             if (tvwKB.SelectedNode.Parent != null)
 | |
|             {
 | |
|                 txtParentName.Tag = (KBEntry)tvwKB.SelectedNode.Parent.Tag;
 | |
|                 txtParentName.Text = tvwKB.SelectedNode.Parent.Text;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 txtParentName.Text = "无";
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 新建子节点
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         private void 添加子目录ToolStripMenuItem_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (tvwKB.SelectedNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("请选择一个节点!");
 | |
|                 return;
 | |
|             }
 | |
|             btnClear_Click(null, null);
 | |
|             txtParentName.Tag = tvwKB.SelectedNode.Tag;
 | |
|             txtParentName.Text = tvwKB.SelectedNode.Text;
 | |
|             txtViewName.Text = ((KBEntry)tvwKB.SelectedNode.Tag).Value;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 节点上移
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         private void 上移ToolStripMenuItem_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (tvwKB.SelectedNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("请选择一个节点!");
 | |
|                 return;
 | |
|             }
 | |
|             if (tvwKB.SelectedNode.PrevNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("当前节点已是第一节点!");
 | |
|                 return;
 | |
|             }
 | |
|             TreeNode Node = tvwKB.SelectedNode;
 | |
|             TreeNode PreNode = Node.PrevNode;
 | |
|             TreeNode NewNode = (TreeNode)Node.Clone();
 | |
|             if (Node.Parent == null)
 | |
|             {
 | |
|                 tvwKB.Nodes.Insert(PreNode.Index, NewNode);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Node.Parent.Nodes.Insert(PreNode.Index, NewNode);
 | |
|             }
 | |
|             Node.Remove();
 | |
|             tvwKB.SelectedNode = NewNode;
 | |
|             RefreshOrders(NewNode);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 节点下移
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         private void 下移ToolStripMenuItem_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (tvwKB.SelectedNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("请选择一个节点!");
 | |
|                 return;
 | |
|             }
 | |
|             if (tvwKB.SelectedNode.NextNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("当前节点已是末节点!");
 | |
|                 return;
 | |
|             }
 | |
|             TreeNode Node = tvwKB.SelectedNode;
 | |
|             TreeNode NextNode = Node.NextNode;
 | |
|             TreeNode NewNode = (TreeNode)Node.Clone();
 | |
|             if (Node.Parent == null)
 | |
|             {
 | |
|                 tvwKB.Nodes.Insert(NextNode.Index + 1, NewNode);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Node.Parent.Nodes.Insert(NextNode.Index + 1, NewNode);
 | |
|             }
 | |
|             Node.Remove();
 | |
|             tvwKB.SelectedNode = NewNode;
 | |
|             RefreshOrders(NewNode);
 | |
|         }
 | |
| 
 | |
|         private void RefreshOrders(TreeNode node)
 | |
|         {
 | |
|             TreeNode pNode = node.Parent;
 | |
|             List<string> ls = new List<string>();
 | |
|             if (pNode == null)
 | |
|             {
 | |
|                 for (int i = 0; i < this.tvwKB.Nodes.Count; i++)
 | |
|                 {
 | |
|                     ls.Add(tvwKB.Nodes[i].Name);
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 for (int i = 0; i < pNode.Nodes.Count; i++)
 | |
|                 {
 | |
|                     ls.Add(pNode.Nodes[i].Name);
 | |
|                 }
 | |
|             }
 | |
|             if (ls.Count > 0)
 | |
|             {
 | |
|                 DocumentDAL.SetOrders(ls);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void btnReflection_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if ( txtViewName.Text == "")
 | |
|             {
 | |
|                 MessageBox.Show("视图名无效!");
 | |
|                 return;
 | |
|             }
 | |
|             frmViewSelect frmViewSelect = new frmViewSelect(txtViewName.Text);
 | |
|             frmViewSelect.EntryId = ((KBEntry)txtName.Tag) == null ? string.Empty : ((KBEntry)txtName.Tag).ID;
 | |
|             frmViewSelect.FormClosing += new FormClosingEventHandler(frmViewSelect_FormClosing);
 | |
|             frmViewSelect.ShowDialog();
 | |
|         }
 | |
| 
 | |
|         private void btnSave_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (txtName.Text.Trim() == "")
 | |
|             {
 | |
|                 MessageBox.Show("请输入节点名称!");
 | |
|                 return;
 | |
|             }
 | |
|             if (this.rdReflection.Checked == true && txtReflection.Text.Trim().Equals(string.Empty))
 | |
|             {
 | |
|                 MessageBox.Show("请选择视图映射列!");
 | |
|                 return;
 | |
|             }
 | |
|             KBEntry entry = new KBEntry() { Value = "" };
 | |
|             entry.ID = "KB" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
 | |
|             entry.Text = txtName.Text.Trim();
 | |
|             entry.ParentID = txtParentName.Tag == null ? null : ((KBEntry)txtParentName.Tag).ID;
 | |
|             entry.SpellCode = cboReLoad.Checked == true ? "1" : "0";
 | |
|             //判断是List还是ListSQL
 | |
|             if (rdSQL.Checked == true)
 | |
|             {
 | |
|                 entry.Style = KBEntryStyle.ListSQL;
 | |
|                 entry.Value = rtbSQL.Text.Trim();
 | |
|             }
 | |
|             else if (this.rdList.Checked == true)
 | |
|             {
 | |
|                 entry.Style = KBEntryStyle.List;
 | |
|                 entry.ListItems = new ListItemCollection();
 | |
|                 foreach (DataGridViewRow row in dgvItems.Rows)
 | |
|                 {
 | |
|                     if (row.Index != dgvItems.NewRowIndex)
 | |
|                     {
 | |
|                         ListItem item = new ListItem();
 | |
|                         item.Text = Convert.ToString(row.Cells[0].Value);
 | |
|                         item.Value = Convert.ToString(row.Cells[1].Value);
 | |
|                         entry.ListItems.Add(item);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             else if (this.rdReflection.Checked == true)
 | |
|             {
 | |
|                 entry.Style = KBEntryStyle.List;
 | |
|                 entry.Text2 = txtReflection.Text;
 | |
|             }
 | |
| 
 | |
|             //判断添加还是修改
 | |
|             try
 | |
|             {
 | |
|                 if (txtName.Tag == null)
 | |
|                 {
 | |
|                     DocumentDAL.InsertEntry(entry);
 | |
|                     RefreshKB();
 | |
|                     MessageBox.Show("添加成功!");
 | |
|                     btnClear_Click(null, null);
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     entry.ID = ((KBEntry)txtName.Tag).ID;
 | |
|                     DocumentDAL.UpdateEntry(entry);
 | |
|                     RefreshKB();
 | |
|                     MessageBox.Show("修改成功!");
 | |
|                     btnClear_Click(null, null);
 | |
|                 }
 | |
|                 DocumentDAL.LoadKBLibaray();
 | |
|             }
 | |
|             catch (Exception exp)
 | |
|             {
 | |
|                 MessageBox.Show(exp.Message);
 | |
|             }
 | |
|         }
 | |
|         private void frmViewSelect_FormClosing(object sender, FormClosingEventArgs e)
 | |
|         {
 | |
|             string vcName = ((frmViewSelect)sender).VcName;
 | |
|             if (!vcName.Equals(string.Empty))
 | |
|             {
 | |
|                 txtReflection.Text = vcName;
 | |
|                 txtName.Text = vcName;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void frmKB_Load(object sender, EventArgs e)
 | |
|         {
 | |
|             RefreshKB();
 | |
|         } 
 | |
| 
 | |
|         private void rd_CheckedChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             RadioButton rd = sender as RadioButton;
 | |
|             if (rd.Checked)
 | |
|             {
 | |
|                 if (rd == rdReflection)
 | |
|                 {
 | |
|                     panel6.Visible = true;
 | |
|                     dgvItems.Visible = false;
 | |
|                     rtbSQL.Visible = false;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     panel6.Visible = false;
 | |
|                     if (rd == rdSQL)
 | |
|                     {
 | |
|                         rtbSQL.Visible = true;
 | |
|                         dgvItems.Visible = false;
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         rtbSQL.Visible = false;
 | |
|                         dgvItems.Visible = true;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|          
 | |
| 
 | |
|         private void btnSelect_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             frmParentSelect frmParentSelect = new frmParentSelect(tvwKB);
 | |
|             frmParentSelect.FormClosing += new FormClosingEventHandler(frmParentSelect_FormClosing);
 | |
|             frmParentSelect.ShowDialog();
 | |
|         }
 | |
| 
 | |
|         private void frmParentSelect_FormClosing(object sender, FormClosingEventArgs e)
 | |
|         {
 | |
|             txtParentName.Tag = ((frmParentSelect)sender).entry;
 | |
|             txtParentName.Text = ((frmParentSelect)sender).entry == null ? "无" : ((frmParentSelect)sender).entry.Text;
 | |
|         }
 | |
| 
 | |
|         private void btnDel_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (txtName.Tag == null)
 | |
|             {
 | |
|                 MessageBox.Show("请选择一个节点!");
 | |
|                 return;
 | |
|             }
 | |
|             if (MessageBox.Show("删除节点将导致某些数据无法显示列表,是否继续?", "提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,
 | |
|                         MessageBoxDefaultButton.Button2) == DialogResult.Yes)
 | |
|             {
 | |
|                 DocumentDAL.DeleteEntry(((KBEntry)txtName.Tag).ID);
 | |
|                 btnClear_Click(null, null);
 | |
|                 RefreshKB();
 | |
|                 MessageBox.Show("删除成功!");
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void tvwKB_AfterSelect(object sender, TreeViewEventArgs e)
 | |
|         { 
 | |
|         }
 | |
| 
 | |
|         private void tvwKB_MouseClick(object sender, MouseEventArgs e)
 | |
|         { 
 | |
|             if (tvwKB.SelectedNode == null)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
|             btnClear_Click(null, null);
 | |
|             KBEntry entry = (KBEntry)tvwKB.SelectedNode.Tag;
 | |
|             if (tvwKB.SelectedNode.Parent != null)
 | |
|             {
 | |
|                 txtParentName.Tag = (KBEntry)tvwKB.SelectedNode.Parent.Tag;
 | |
|                 txtParentName.Text = tvwKB.SelectedNode.Parent.Text;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 txtParentName.Text = "无";
 | |
|             }
 | |
|             txtName.Text = entry.Text;
 | |
|             txtName.Tag = entry;
 | |
|             if (entry.SpellCode == "1")
 | |
|                 cboReLoad.Checked = true;
 | |
|             else
 | |
|                 cboReLoad.Checked = false;
 | |
|             //判断节点的Style
 | |
|             if (entry.Style == KBEntryStyle.List && entry.ListItems != null && entry.ListItems.Count > 0)
 | |
|             {
 | |
|                 rdList.Checked = true;
 | |
|                 foreach (ListItem item in entry.ListItems)
 | |
|                 {
 | |
|                     dgvItems.Rows.Add(item.Text, item.Value);
 | |
|                 }
 | |
|             }
 | |
|             else if (entry.Style == KBEntryStyle.ListSQL)
 | |
|             {
 | |
|                 rdSQL.Checked = true;
 | |
|                 rtbSQL.Text = entry.Value;
 | |
|             }
 | |
|             else if (entry.Text2 != null)
 | |
|             {
 | |
|                 this.rdReflection.Checked = true;
 | |
|                 txtReflection.Text = entry.Text2.ToString();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |