ucqueryinst.cs.svn-base
来自「以构建的方式来实现对通用的查询统计」· SVN-BASE 代码 · 共 509 行 · 第 1/2 页
SVN-BASE
509 行
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using dist.hb.EnvQueryStat.Pub;
namespace dist.hb.EnvQueryStat.QuerySet
{
public partial class ucQueryInst : UserControl
{
public ucQueryInst()
{
InitializeComponent();
}
private OleDbConnection m_OleDbConn;
public OleDbConnection OleDbConn
{
get { return m_OleDbConn; }
set
{
if (value == null) return;
if (value == m_OleDbConn) return;
m_OleDbConn = value;
}
}
private void splitterControl1_SplitterMoved(object sender, SplitterEventArgs e)
{
}
//以下函数填充树(处理查询分类)
//处理查询分类
System.Data.DataTable m_QCTable;
//绑定到查询分类表
private void BindQCTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT QueryClassID,PQueryClassID,QueryClassName FROM FS_QueryInstClass";
System.Data.OleDb.OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
Adapter.Fill(ds, "FS_QueryInstClass");
m_QCTable = ds.Tables["FS_QueryInstClass"];
}
private void FillTree()
{
if (m_QCTable == null) return;
DataRow[] drs = m_QCTable.Select("PQueryClassID is null");
if (drs == null) return;
FillTree(drs, null);
}
private void FillTree(DataRow[] drs, TreeNode pNode)
{
if (drs == null) return;
if (drs.Length <= 0) return;
foreach (DataRow row in drs)
{
//QueryClassID,PQueryClassID,QueryClassName
TreeNode nd = AddNode(pNode, row["QueryClassName"].ToString(), row["QueryClassID"].ToString());
DataRow[] NEWdrs = m_QCTable.Select("PQueryClassID =" + row["QueryClassID"]);
FillTree(NEWdrs, nd);
//增加查询实例节点(being)
CreateQueryInstNode(nd);
//增加查询实例节点(end)
}
}
//以下函数处理查询实例
System.Data.OleDb.OleDbDataAdapter m_QueryInstDbDataAdapter;
System.Data.DataSet m_QueryInstDataSet;
System.Data.DataTable m_QueryInstTable;
OleDbCommandBuilder m_QueryInstCB;
string m_strQueryInstTbl = "FS_QueryInst";
int m_nQueryInstImageIndex = 6;
//查询实例绑定
private void BindQueryInstTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT * FROM " + m_strQueryInstTbl;
m_QueryInstDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
m_QueryInstCB = new OleDbCommandBuilder(m_QueryInstDbDataAdapter);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = m_OleDbConn;
//cmd.Transaction = m_tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
m_QueryInstDbDataAdapter.SelectCommand = cmd;
m_QueryInstDbDataAdapter.Fill(ds, m_strQueryInstTbl);
m_QueryInstTable = ds.Tables[m_strQueryInstTbl];
m_QueryInstDataSet = ds;
}
private void CreateQueryInstNode(TreeNode tr)
{
if (tr == null) return;
DataRow[] drs = m_QueryInstTable.Select("QueryClassID =" + tr.Name);
if (drs == null) return;
if (drs.Length <= 0) return;
foreach (DataRow row in drs)
{
TreeNode nd = AddNode(tr, row["QueryInstName"].ToString(), row["QueryInstID"].ToString());
nd.ImageIndex = m_nQueryInstImageIndex;
nd.SelectedImageIndex = m_nQueryInstImageIndex;
}
}
private TreeNode NewQueryInst(TreeNode tn)
{
if (tn == null || tn.ImageIndex == m_nQueryInstImageIndex) return null;
if (lookUpEdit1.GetColumnValue("AbstractQueryID") == null)
{
MessageBox.Show("请选择查询模板", "消息");
return null;
}
DataRow row;
row = m_QueryInstTable.NewRow();
int iReturn = GetMaxID();//查询实例ID;
row["QueryInstID"] = iReturn;
row["AbstractQueryID"] = (int)lookUpEdit1.GetColumnValue("AbstractQueryID");//查询实例
row["QueryClassID"] = Convert.ToInt32(tn.Name);
row["QueryInstName"] = textBox_QueryInstName.Text;
row["AttWinVisible"] = checkBox_attVisible.Checked;
row["SpWinVisible"] = checkBox_SpacialVisible.Checked;
m_QueryInstTable.Rows.Add(row);
TreeNode newTN = AddNode(tn, textBox_QueryInstName.Text, iReturn.ToString());
newTN.ImageIndex = m_nQueryInstImageIndex;
return newTN;
}
private TreeNode ModifyQueryInst(TreeNode tn)
{
if (tn == null || tn.ImageIndex != m_nQueryInstImageIndex) return null;
DataRow row;
//选择的就是查询模板,找不到记录集的情况不应该出现
DataRow[] drs = m_QueryInstTable.Select("QueryInstID=" + tn.Name);
if (drs == null || drs.Length == 0)
{
MessageBox.Show("没有找到要更新的数据!", "消息");
return null;
}
row = drs[0];
if (lookUpEdit1.GetColumnValue("AbstractQueryID") == null)
{
MessageBox.Show("请选择查询模板", "消息");
return null;
}
row["QueryInstID"] = Convert.ToInt32(tn.Name);
row["AbstractQueryID"] = (int)lookUpEdit1.GetColumnValue("AbstractQueryID");//查询实例
row["QueryClassID"] = Convert.ToInt32(tn.Parent.Name);
row["QueryInstName"] = textBox_QueryInstName.Text;
row["AttWinVisible"] = checkBox_attVisible.Checked;
row["SpWinVisible"] = checkBox_SpacialVisible.Checked;
tn.Text = textBox_QueryInstName.Text;
tn.ImageIndex = m_nQueryInstImageIndex;
return tn;
}
//取最大值
private int GetMaxID()
{
if (m_QueryInstTable == null) return 0;
string strTemp = m_QueryInstTable.Compute("MAX(QueryInstID)", "").ToString();
if (strTemp == "") return 1;
else return 1 + Convert.ToInt32(strTemp);
}
//树节点操作
private TreeNode AddNode(TreeNode pNode, string strTxt, string strKey)
{
if (pNode == null)
{
TreeNode pNode1 = treeView1.Nodes.Add(strKey, strTxt);//增加根节点
return pNode1;
}
else
{
return pNode.Nodes.Add(strKey, strTxt);
}
}
private void ucQueryInst_Load(object sender, EventArgs e)
{
BindQueryInstTable();//绑定查询实例表
BindQCTable();//绑定查询分类表
FillTree();
InitLookupData();
//实例化属性过滤对象
proAttFilter = new clsProAttFilter();
proAttFilter.OleDbConn = m_OleDbConn;
treeView1.ExpandAll();
}
private void btnNew_Click(object sender, EventArgs e)
{
textBox_QueryInstName.Text = "";
}
private void btnSave_Click(object sender, EventArgs e)
{
if (textBox_QueryInstName.Text == "")
{
MessageBox.Show("查询实例名称不能为空!");
return;
}
TreeNode tn = treeView1.SelectedNode;
if (tn == null)
{
MessageBox.Show("查询分类不能为空!");
return;
}
gridControl1.EmbeddedNavigator.Buttons.EndEdit.DoClick();
//如果选择的是分类节点,则增加;如果选择的查询节点,则修改。
if (tn.ImageIndex != m_nQueryInstImageIndex) tn = NewQueryInst(tn);
else tn = ModifyQueryInst(tn);
if (tn == null) return;
tn.SelectedImageIndex = m_nQueryInstImageIndex;
tn.ImageIndex = m_nQueryInstImageIndex;
try
{
m_QueryInstDbDataAdapter.Update(m_QueryInstDataSet, m_strQueryInstTbl);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示");
return;
}
//保存属性过滤表
proAttFilter.SaveAttFilterTable(Convert.ToInt32(tn.Name));//查询实例的ID
}
private void btnDelete_Click(object sender, EventArgs e)
{
TreeNode tn = treeView1.SelectedNode;
if (tn == null || tn.ImageIndex != m_nQueryInstImageIndex)
{
MessageBox.Show("请选择查询模板!", "消息");
return;
}
//选择的就是查询模板,找不到记录集的情况不应该出现
DataRow[] drs = m_QueryInstTable.Select("QueryInstID=" + tn.Name);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?