现在的位置: 首页 > 综合 > 正文

DataGrid刷新

2012年10月22日 ⁄ 综合 ⁄ 共 3166字 ⁄ 字号 评论关闭

 public class ClassDataGridRefresh
 {
  public ClassDataGridRefresh()
  {
  }

  #region DataGrid刷新

  /// <summary>
  /// DataGrid刷新
  /// </summary>
  /// <param name="DG">DataGrid控件</param>
  /// <param name="DV">DataView数据源</param>
  /// <param name="m_strWidth">各列列宽,使用分号“;”分隔</param>
  /// <param name="m_strHidden">隐藏列,使用分号“;”分隔</param>
  public static void RefreshDataGrid(System.Windows.Forms.DataGrid DG, System.Data.DataView DV, string m_strWidth, string m_strHidden)
  {
   try
   {
    RefreshDataGrid(DG, DV, m_strWidth, m_strHidden, true);
   }
   catch(Exception ex)
   {
    System.Windows.Forms.MessageBox.Show(ex.Message.ToString(),"DataGrid刷新错误");
   }
  }

  /// <summary>
  /// DataGrid刷新
  /// </summary>
  /// <param name="DG">DataGrid控件</param>
  /// <param name="DV">DataView数据源</param>
  /// <param name="m_strWidth">各列列宽,使用分号“;”分隔</param>
  /// <param name="m_strHidden">隐藏列,使用分号“;”分隔</param>
  /// <param name="m_blnIsReDraw">是否每次都重新刷新列头</param>
  public static void RefreshDataGrid(System.Windows.Forms.DataGrid DG, System.Data.DataView DV, string m_strWidth, string m_strHidden, bool m_blnIsReDraw)
  {
   try
   {
    int i;
    int numCols;
    System.Windows.Forms.DataGridTableStyle ts = new System.Windows.Forms.DataGridTableStyle();  //就是它决定了datagrid是什么样的
    System.Windows.Forms.DataGridTextBoxColumn aColumnTextColumn;    //要重写的东东
    System.Windows.Forms.DataGridBoolColumn  aColumnBoolColumn;    //要重写的东东

    string[] ColumnWidths = m_strWidth.Split(';');
    string[] strHiddens = m_strHidden.Split(';');

    numCols = DV.Table.Columns.Count;

    if (m_blnIsReDraw == true)
    {
     foreach(string strHiddenTemp in strHiddens)
     {
      if (strHiddenTemp.Length > 0)
      {
       DV.Table.Columns[strHiddenTemp].ColumnMapping = System.Data.MappingType.Hidden;
      }
     }

     DG.Font = new System.Drawing.Font("宋体",10,System.Drawing.FontStyle.Regular);
    }

    DG.DataSource = DV;

    if (m_blnIsReDraw == true)
    {
     ts.MappingName = DV.Table.TableName;

     for(i=0;i<numCols;i++)  // 重绘所有的列
     {
      switch (DV.Table.Columns[i].DataType.Name)
      {
       case "Boolean":    //bool Column
        aColumnBoolColumn =new System.Windows.Forms.DataGridBoolColumn();
        //要更改列头名,请改下句的HeaderText值
        aColumnBoolColumn.HeaderText = DV.Table.Columns[i].ColumnName;
        aColumnBoolColumn.MappingName = DV.Table.Columns[i].ColumnName;

        if (ColumnWidths.Length > i)
        {
         aColumnBoolColumn.Width = (int) (Convert.ToDouble(ColumnWidths[i]) * 50);
        }

        ts.GridColumnStyles.Add(aColumnBoolColumn);  //增加一种自定义的column风格

        break;

       default:     //Default (Text) Column
        aColumnTextColumn =new System.Windows.Forms.DataGridTextBoxColumn();
        //要更改列头名,请改下句的HeaderText值
        aColumnTextColumn.HeaderText = DV.Table.Columns[i].ColumnName;
        aColumnTextColumn.MappingName = DV.Table.Columns[i].ColumnName;      

        if (ColumnWidths.Length > i)
        {
         aColumnTextColumn.Width = (int) (Convert.ToDouble(ColumnWidths[i]) * 50);       
        }

        ts.GridColumnStyles.Add(aColumnTextColumn);  //增加一种自定义的column风格

        break;
      }
     }
     DG.TableStyles.Clear();
     DG.TableStyles.Add(ts);
    }
   }
   catch(Exception ex)
   {
    System.Windows.Forms.MessageBox.Show(ex.Message.ToString(),"DataGrid刷新错误");
   }
  }
  #endregion

 }

抱歉!评论已关闭.