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(); } /// /// 刷新知识库 /// 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 = ""; } /// /// 新建同级节点 /// /// /// 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 = "无"; } } /// /// 新建子节点 /// /// /// 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; } /// /// 节点上移 /// /// /// 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); } /// /// 节点下移 /// /// /// 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 ls = new List(); 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_MouseClick(object sender, MouseEventArgs e) { } private void tvwKB_AfterSelect(object sender, TreeViewEventArgs 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(); } } } }