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();
|
|
}
|
|
}
|
|
}
|
|
}
|