⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucstatclass.cs.svn-base

📁 以构建的方式来实现对通用的查询统计
💻 SVN-BASE
字号:
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.StatSet
{
  public partial class ucStatClass : UserControl
  {
    public ucStatClass()
    {
      InitializeComponent();
    }
    System.Data.OleDb.OleDbDataAdapter m_currentDbDataAdapter;
    System.Data.DataSet m_currentDataSet;
    System.Data.DataTable m_currentTable;
    OleDbCommandBuilder m_custCB;
    string m_strTbl = "FS_StatInstClass";
    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 BindTable()
    {
      DataSet ds = new DataSet();
      string strSQL;
      strSQL = "SELECT StatClassID,PStatClassID,StatClassName FROM "+ m_strTbl;
      m_currentDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);

      m_custCB = new OleDbCommandBuilder(m_currentDbDataAdapter);//起什么作用?
      OleDbCommand cmd = new OleDbCommand();

      cmd.Connection = m_OleDbConn;
      //cmd.Transaction = m_tran;
      cmd.CommandType = CommandType.Text;
      cmd.CommandText = strSQL;
      m_currentDbDataAdapter.SelectCommand = cmd;

      m_currentDbDataAdapter.Fill(ds, m_strTbl);
      m_currentTable = ds.Tables[m_strTbl];

      //增加主键
      DataColumn[] keys = new DataColumn[1];
      keys[0] = m_currentTable.Columns[0];
      m_currentTable.PrimaryKey = keys;

      m_currentDataSet = ds;
    }
    private void AddNewRow(string strQueryClassID,string strPQueryClassID,string strQueryClassName)
    {
      DataRow row;
      row = m_currentTable.NewRow();
      row["StatClassID"] = Convert.ToInt32(strQueryClassID);
      if (strPQueryClassID != "")   row["PStatClassID"] = Convert.ToInt32(strPQueryClassID);
      row["StatClassName"] = strQueryClassName;
      m_currentTable.Rows.Add(row);
    }

    private void DeleteRow(string strQueryClassID)
    {
      DataRowCollection drc = m_currentTable.Rows;
      if (drc == null) return;
      DataRow dr = drc.Find(strQueryClassID);
      dr.Delete();
      //if (dr == null) return;
      //drc.Remove(dr);
    }

    private void ModifyRow(string strQueryClassID,  string strQueryClassName)
    {
      DataRowCollection drc = m_currentTable.Rows;
      if (drc == null) return;
      DataRow dr = drc.Find(strQueryClassID);
      if (dr == null) return;
      dr["StatClassName"] = strQueryClassName;
    }

    //取最大值
    private int GetMaxVTID()
    {
      DataTable tbl;
      tbl = m_currentDataSet.Tables[m_strTbl];
      if (tbl == null) return 0;
      string strTemp = tbl.Compute("MAX(StatClassID)", "").ToString();
      if (strTemp == "") return 1;
      else return 1 + Convert.ToInt32(strTemp);
    }

    private void barButtonItem_New_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      frmInputBox InputBox = new frmInputBox();
      InputBox.ShowDialog() ;
      TreeNode nd = treeView1.SelectedNode;
      AddNode(nd, InputBox.InputText, GetMaxVTID().ToString());
      //
      string strPQueryClassID = "";
      if (nd != null) strPQueryClassID = nd.Name;
      AddNewRow(GetMaxVTID().ToString(), strPQueryClassID, InputBox.InputText);//增加到数据库
      //MessageBox.Show(InputBox.InputText);
    }

    private void barButtonItem_modify_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      TreeNode nd = treeView1.SelectedNode;
      if (nd == null) return;

      frmInputBox InputBox = new frmInputBox();
      InputBox.InputText = nd.Text; 
      InputBox.ShowDialog();
      if (InputBox.InputText != "")  nd.Text = InputBox.InputText;
      ModifyRow(nd.Name, nd.Text); 
    }

    private void barButtonItem_delete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      TreeNode nd = treeView1.SelectedNode;
      if (nd == null) return;
      treeView1.Nodes.Remove(nd);
      DeleteRow(nd.Name);
    }

    private void ucQueryClass_Load(object sender, EventArgs e)
    {
      BindTable();
      FillTree();
      treeView1.ExpandAll();
    }

    private void FillTree()
    {
      if (m_currentTable == null) return;
      DataRow[] drs = m_currentTable.Select("PStatClassID 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["StatClassName"].ToString(), row["StatClassID"].ToString());
        DataRow[] NEWdrs = m_currentTable.Select("PStatClassID ="+row["StatClassID"]);
        FillTree(NEWdrs, nd);
      }
    }

    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 ucQueryClass_Leave(object sender, EventArgs e)
    {
      try
      {
        m_currentDbDataAdapter.Update(m_currentDataSet, m_strTbl);
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message, "提示");
      }
    }

    private void ucQueryClass_VisibleChanged(object sender, EventArgs e)
    {
    }

    private void ucQueryClass_ControlRemoved(object sender, ControlEventArgs e)
    {

    }

    private void barButtonItem1_save_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      try
      {
        //m_custCB.RefreshSchema();
        m_currentDbDataAdapter.Update(m_currentDataSet, m_strTbl);
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message, "提示");
      }
    }

   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -