DataGrid的使用

DataGrid 的使用

 

一:从文本文件中读取数据,并保存到DataSet中
 public static DataSet TextFileLoader(string FilePath, string TableName, string[] FieldsInArray)
 {
  DataSet ds = new DataSet();
  DataTable dt = new DataTable(TableName);

  FileStream fs = File.Open(FilePath, FileMode.Open, FileAccess.Read);
  StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("GB2312"));

  //设置列名
  for (int i = 0; i < FieldsInArray.Length; i++)
  {
   dt.Columns.Add(new DataColumn(FieldsInArray[i], typeof(string)));
  }

  string strRead;
  bool flag = true;

  while (flag)
  {
   strRead = sr.ReadLine();

   if (!string.IsNullOrEmpty(strRead))
   {
    string[] aryVale = strRead.Split(',');

    DataRow dr = dt.NewRow();
    for (int k = 0; k < aryVale.Length; k++)
    {
     dr[FieldsInArray[k]] = aryVale[k];
    }
    dt.Rows.Add(dr);
   }
   else
   {
    flag = false;
   }
  }

  ds.Tables.Add(dt);
  return ds;

 }
 //文本文件显示
 private void button1_Click(object sender, EventArgs e)
 {
  string[] FieldsInArray = { "epc", "cardno", "user" };

  DataSet ds = new DataSet();

  ds = TextFileLoader(strFileName, "record", FieldsInArray);

  dataGrid1.DataSource = ds.Tables[0];

 }

二:数据库中提取
 SqlCeConnection sqlceConn = null;
 SqlCeDataReader sqlceReader = null;

 sqlceConn = new SqlCeConnection(strDBConnectString);
 sqlceConn.Open();

 SqlCeCommand sqlceCmd = new SqlCeCommand("select count(*) from T_test", sqlceConn);
 int i = Convert.ToInt32(sqlceCmd.ExecuteScalar());

 sqlceCmd = new SqlCeCommand("select * from T_test", sqlceConn);
 SqlCeDataAdapter sqladapter = new SqlCeDataAdapter(sqlceCmd);

 //将DataSet和DataTable关联
 DataSet ds = new DataSet();
 ds.Tables.Add("T_test");
 DataTable dt = new DataTable();
 dt = ds.Tables["T_test"];

 //在现实时,增加递增字段
 dt.Columns.Add(new DataColumn("ID", typeof(int)));
 dt.Columns[0].AutoIncrement = true;
 dt.Columns[0].AutoIncrementSeed = 3;


 sqladapter.Fill(ds, "T_test");

 sqlceConn.Close();

 dt.Columns[0].ColumnName = "编号";
 dt.Columns[1].ColumnName = "数据库编号";
 dt.Columns[2].ColumnName = "姓名";
 dt.Columns[3].ColumnName = "次数";

 dataGrid1.DataSource = dt;

三:自动调整列宽
public void SizeColumnsToContent(DataGrid dataGrid, int nRowsToScan, DataTable _dataTable)
{
 //   Create   graphics   object   for   measuring   widths.  
 Graphics Graphics = dataGrid.CreateGraphics();

 //   Define   new   table   style.  
 DataGridTableStyle tableStyle = new DataGridTableStyle();

 try
 {
  DataTable dataTable = _dataTable;

  if (-1 == nRowsToScan)
  {
   nRowsToScan = dataTable.Rows.Count;
  }
  else
  {
   //   Can   only   scan   rows   if   they   exist.  
   nRowsToScan = System.Math.Min(nRowsToScan, dataTable.Rows.Count);
  }

  //   Clear   any   existing   table   styles.  
  dataGrid.TableStyles.Clear();

  //   Use   mapping   name   that   is   defined   in   the   data   source.  
  tableStyle.MappingName = dataTable.TableName;
  //设置grid中蓝白交错效果  
  //tableStyle.AlternatingBackColor = Color.LightBlue;
  //tableStyle.BackColor = Color.White;

  //   Now   create   the   column   styles   within   the   table   style.  
  DataGridTextBoxColumn columnStyle;
  int iWidth;

  for (int iCurrCol = 0; iCurrCol < dataTable.Columns.Count; iCurrCol++)
  {
   DataColumn dataColumn = dataTable.Columns[iCurrCol];

   columnStyle = new DataGridTextBoxColumn();

   //columnStyle.TextBox.Enabled = true;
   columnStyle.HeaderText = dataColumn.ColumnName;
   columnStyle.MappingName = dataColumn.ColumnName;

   //   Set   width   to   header   text   width.  
   iWidth = (int)(Graphics.MeasureString(columnStyle.HeaderText, dataGrid.Font).Width);

   //   Change   width,   if   data   width   is   wider   than   header   text   width.  
   //   Check   the   width   of   the   data   in   the   first   X   rows.  
   DataRow dataRow;
   for (int iRow = 0; iRow < nRowsToScan; iRow++)
   {
    dataRow = dataTable.Rows[iRow];

    if (null != dataRow[dataColumn.ColumnName])
    {
     int iColWidth = (int)(Graphics.MeasureString(dataRow.ItemArray[iCurrCol].ToString(), dataGrid.Font).Width);
     iWidth = (int)System.Math.Max(iWidth, iColWidth);
    }
   }
   columnStyle.Width = iWidth + 20;

   //   Add   the   new   column   style   to   the   table   style.  
   tableStyle.GridColumnStyles.Add(columnStyle);
  }
  //   Add   the   new   table   style   to   the   data   grid.  
  dataGrid.TableStyles.Add(tableStyle);
 }
 catch (Exception e)
 {
  MessageBox.Show(e.Message);
 }
 finally
 {
  Graphics.Dispose();
 }
}

四:选中行时得反映,初步这两个可以加起来可以做到
 //行或列选择发生变化时响应
 private void dataGrid1_CurrentCellChanged(object sender, EventArgs e)
 {
  dataGrid1.Select(dataGrid1.CurrentCell.RowNumber);

  MessageBox.Show("1  " + dataGrid1.CurrentCell.RowNumber.ToString());
 }
 //列选中列时发生响应
 private void dataGrid1_MouseUp(object sender, MouseEventArgs e)
 {
  System.Drawing.Point pt = new Point(e.X, e.Y);
  DataGrid.HitTestInfo hti = dataGrid1.HitTest(pt.X, pt.Y);
  if (hti.Type == DataGrid.HitTestType.Cell)
  {
   dataGrid1.CurrentCell = new DataGridCell(hti.Row, hti.Column);
   dataGrid1.Select(hti.Row);

   MessageBox.Show("2  " + hti.Row.ToString());
  }
 }

 

        private void createDataGridStyle()
        {
            DataTable tmpDt = new DataTable("T_QueryRecord");

            string[] HeaderText = { "序号", "车牌号", "印刷卡号", "检测时间" };

            for (int i = 0; i < HeaderText.Length; i++)
            {
                tmpDt.Columns.Add(HeaderText[i], typeof(string));
            }

            this.dg_QueryRecord.DataSource = tmpDt;
        }

        private void InitDataGridColumnHeader()  
        {
            dg_QueryRecord.TableStyles.Clear();
            DataGridTableStyle dts = new DataGridTableStyle();

            dts.MappingName = "T_QueryRecord";
            dg_QueryRecord.TableStyles.Add(dts);
            dg_QueryRecord.TableStyles[0].GridColumnStyles.Clear();

            DataGridTextBoxColumn colID = new DataGridTextBoxColumn();
            colID.Width = 40;
            colID.HeaderText = "序号";
            colID.MappingName = "序号";
            dg_QueryRecord.TableStyles[0].GridColumnStyles.Add(colID);

            DataGridTextBoxColumn colName = new DataGridTextBoxColumn();
            colName.Width = 50;
            colName.HeaderText = "车牌号";
            colName.MappingName = "车牌号";
            dg_QueryRecord.TableStyles[0].GridColumnStyles.Add(colName);


            DataGridTextBoxColumn colSL1 = new DataGridTextBoxColumn();
            colSL1.Width = 70;
            colSL1.HeaderText = "印刷卡号";
            colSL1.MappingName = "印刷卡号";
            dg_QueryRecord.TableStyles[0].GridColumnStyles.Add(colSL1);

            DataGridTextBoxColumn colSL2 = new DataGridTextBoxColumn();
            colSL2.Width = 140;
            colSL2.HeaderText = "检测时间";
            colSL2.MappingName = "检测时间";
            dg_QueryRecord.TableStyles[0].GridColumnStyles.Add(colSL2);

        }

        private string strCheckRecordUseVehicleNo = @"Select  strVehicleNo as 车牌号,
                                                        strPrintNo as 印刷卡号,
                                                        strCheckTime as 检测时间
                                                        from T_CheckRecord where strVehicleNo LIKE @QstrVehicleNo";

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值