2023-08-15 23:33:21 +08:00

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