WNFORM实现窗体的DataGrid控件刷新

简介:

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
}




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2009/09/09/1563035.html,如需转载请自行联系原作者


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
Windows
Winform控件Button及控件的鼠标事件介绍
按钮控件是最常用的,用于实现点击完成操作。其主要处理的就是鼠标点击Click事件。由此可以引发出所有与鼠标有关的事件.....
1136 0
Winform控件Button及控件的鼠标事件介绍
|
C# 前端开发
wpf中的datagrid绑定操作按钮是否显示或者隐藏
如图,需要在wpf中的datagrid的操作那列有个确认按钮,然后在某些条件下确认按钮可见,某些情况下不可见的,放在mvc里直接在cshtml页面中if..else就行了。 但是在wpf里不行。。网上搜索了好久才找到解决方法,原来只是binding那个visiable属性就行了,
6850 0
|
C#
C# DataGridview控件自动下拉到最后一行
有时候使用DataGridView难免会在最后插入一条数据,如果插入的数据超过滚动条显示的行数,那么默认情况下不会显示到最后一行。增加以下代码一直将滚动条拉倒最低。 this.dataGridView1.
2362 0
|
C# Windows 程序员
|
C# Windows 程序员