ucabstractqueryaction.cs

来自「以构建的方式来实现对通用的查询统计」· CS 代码 · 共 200 行

CS
200
字号
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 DevExpress.XtraEditors.Repository;

namespace dist.hb.EnvQueryStat.QuerySet
{
  public partial class ucAbstractQueryAction : UserControl
  {
    System.Data.OleDb.OleDbDataAdapter m_currentDbDataAdapter;
    System.Data.DataSet m_currentDataSet;
    string m_strTbl = "FS_ActionOfQuery";
    int m_nAbstractQueryID = -1;


    private OleDbConnection m_OleDbConn;

    public OleDbConnection OleDbConn
    {
      get { return m_OleDbConn; }
      set
      {
        if (value == null) return;
        if (value == m_OleDbConn) return;
        m_OleDbConn = value;
      }
    }

    public ucAbstractQueryAction()
    {
      InitializeComponent();
    }

     private DataTable GetVTField(int nVTID)
    {
      DataSet ds = new DataSet();
      string strSQL;
      OleDbDataAdapter adapter;

      strSQL = "SELECT VFieldID FROM FS_VTFieldDes WHERE VTID =" + nVTID.ToString();
      adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
      adapter.Fill(ds, "FS_VTFieldDes");
      return ds.Tables["FS_VTFieldDes"];
    }

    private void DeleteOldTblContent(int nID)
    {
      string strSQL;
      strSQL = "DELETE  FROM " + m_strTbl + " WHERE AbstractQueryID =" + nID.ToString();
      OleDbCommand command = new OleDbCommand(strSQL, m_OleDbConn);
      command.ExecuteNonQuery();
      command.Dispose();
    }

    private void ucAbstractQueryField_Load(object sender, EventArgs e)
    {
      InitLookUp();
      RepositoryItemLookUpEdit lookUpProperties;
      lookUpProperties = lookUpEdit1.Properties;
      lookUpProperties.ShowLines = true;
      InitLookupData();

    }

    private void BindField(int nID)
    {
      DataSet ds = new DataSet();
      string strSQL;
      strSQL = "SELECT AbstractQueryID,ActionID FROM " + m_strTbl + " WHERE AbstractQueryID =" + nID.ToString();
      m_currentDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
      string strFillTbl = m_strTbl;

      OleDbCommandBuilder 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, strFillTbl);
      DataTable dt = ds.Tables[strFillTbl];
      //增加约束
      UniqueConstraint objConstraint = new UniqueConstraint(new DataColumn[] { dt.Columns[0], dt.Columns[1] }, true);
      dt.Constraints.Add((Constraint)objConstraint);

      gridControl1.DataSource = dt;
      m_currentDataSet = ds;
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
      try
      {
        m_currentDbDataAdapter.Update(m_currentDataSet, m_strTbl);
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message, "提示");
      }
    }

    //初始化虚表数据
    private void InitLookupData()
    {
      DataSet ds = new DataSet();
      System.Data.OleDb.OleDbDataAdapter dbAdapter = new System.Data.OleDb.OleDbDataAdapter(
        "SELECT AbstractQueryName,AbstractQueryID FROM FS_AbstractQuery", m_OleDbConn);
      dbAdapter.Fill(ds, "FS_AbstractQuery");
      DataViewManager dvm = new DataViewManager(ds);
      DataView dvLookup;

      dvLookup = dvm.CreateDataView(ds.Tables["FS_AbstractQuery"]);

      // <lookUpEdit1>
      //lookUpEdit1.DataBindings.Add("EditValue", dvLookup, "VTID");
      lookUpEdit1.Properties.DataSource = dvLookup;
      lookUpEdit1.Properties.DisplayMember = "AbstractQueryName";
      lookUpEdit1.Properties.ValueMember = "AbstractQueryID";
      // </lookUpEdit1>

    }

    private void lookUpEdit1_Properties_EditValueChanged(object sender, EventArgs e)
    {
      if (lookUpEdit1.GetColumnValue("AbstractQueryName") == null) return;
      if (lookUpEdit1.GetColumnValue("AbstractQueryID") == null) return;
      m_nAbstractQueryID = (int)lookUpEdit1.GetColumnValue("AbstractQueryID");
      //lookUpEdit1.GetColumnValue 
      BindField(m_nAbstractQueryID);
      //MessageBox.Show("测试","消息");    }
    }


    //对GRID中的lookup进行初始化
    private void InitLookUp()
    {
      DataSet ds = new DataSet();
      string strSQL;
      strSQL = "SELECT ActionID,ActionName,URL,remark FROM FS_Action";
      OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);

      Adapter.Fill(ds, "FS_Action");
      DataTable dt = ds.Tables["FS_Action"];
      repositoryItemLookUpEdit1.DataSource = dt;
      repositoryItemLookUpEdit1.DisplayMember = "ActionName";
      repositoryItemLookUpEdit1.ValueMember = "ActionID";
    }

    private void gridControl1_EmbeddedNavigator_ButtonClick(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
    {
      if (e.Button.ButtonType.ToString() != "Remove") return;
      DevExpress.XtraGrid.GridControlNavigator Nav = (DevExpress.XtraGrid.GridControlNavigator)sender;
      int iPos = Nav.NavigatableControl.Position;
      if (iPos < 0) return;
      DataTable db = m_currentDataSet.Tables[m_strTbl];
      if (iPos > db.Rows.Count-1) return;

      long nAQid;
      long nActionID;
      
      nAQid = (int)db.Rows[iPos].ItemArray[0];
      nActionID = (int)db.Rows[iPos].ItemArray[1];
      DeleteQA(nAQid, nActionID);
    }

    private void DeleteQA(long nAQid,long nActionID)
    {
      string strSQL;
      strSQL = "DELETE  FROM " + m_strTbl + " WHERE AbstractQueryID =" + nAQid.ToString() +
                " AND ActionID =" + nActionID.ToString();
      OleDbCommand command = new OleDbCommand(strSQL, m_OleDbConn);
      command.ExecuteNonQuery();
      command.Dispose();
    }

    private void gridView1_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
    {
      System.Data.DataRowView dv = (DataRowView)e.Row;
      if (dv == null) return;
      DataRow[] rows = new DataRow[]{dv.Row};
      m_currentDbDataAdapter.Update(rows);
      //MessageBox.Show("测试", "提示");
    }

    private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
    {
      DataRow row = gridView1.GetDataRow(e.RowHandle);
      row["AbstractQueryID"] = m_nAbstractQueryID;
    }

  }
}

⌨️ 快捷键说明

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