C# .net不同版本中winform控件 dataGrid DataGridDataGridView 有什么区别

C# .net不同版本中winform控件 dataGrid DataGridDataGridView 有什么区别,第1张

DataGridView 控件是替换 DataGrid 控件的新控件。DataGridView 控件提供了 DataGrid 控件中没有的许多基本功能和高级功能。此外,DataGridView 控件的结构使得它比 DataGrid 控件更容易扩展和自定义。

DataGridView 控件功能

1多种列类型

与 DataGrid 控件相比,DataGridView 控件提供了更多的内置列类型。这些列类型能满足大多数常见方案的需要,而且比 DataGrid 控件中的列类型更容易扩展或替换。

2 多种数据显示方式

DataGrid 控件仅限于显示外部数据源的数据。而 DataGridView 控件可显示存储在控件中的未绑定数据、来自绑定数据源的数据或者同时显示绑定数据和未绑定数据。也可以在 DataGridView 控件中实现虚拟模式以提供自定义数据管理。、

3 用于自定义数据显示的多种方式

DataGridView 控件提供了许多属性和事件,您可以使用它们指定数据的格式设置方式和显示方式。例如,您可以根据单元格、行和列中包含的数据更改其外观,或者将一种数据类型的数据替换为另一种类型的等效数据。

4 用于更改单元格、行、列、标头外观和行为的多个选项

DataGridView 控件使您能够以多种方式使用各个网格组件。例如,您可以冻结行和列以阻止其滚动;隐藏行、列和标头;更改调整行、列和标头大小的方式;更改用户进行选择的方式;以及为各个单元格、行和列提供工具提示和快捷菜单。

WinForm程序中 表格GridControl

(1)在WinForm程序中,要使用表格控件,需要找到控件GridControl,在Run Designer中,我们可以设置表格的属性和列的属性,Views为表格的属性,Columns为列的属性

在列的属性中FieldName为数据库字段,此字段必须和数据库一致

Caption为列显示的列名

ColumnEdit可以对该列的类型进行转换,如果需要将该列转换为下拉框形式,那么就选择ComboboxEdit

(2)在左边导航Appearance中可以设置表格的样式

(3)GridControl的数据源

在我使用该控件的过程中,我不太喜欢给该控件绑定一个数据源,我觉得在解决方案中会添加一些文件,所以我习惯用代码的形式来为其指定数据源

假设GridControl有四列,分别为StuNo,StuName,StuSex,StuAge

在页面后台程序中需要这样写

string sql = "select StuNo,StuName,StuSex,StuAge from StudentInfos";

DataTable dt = UtilsExecuteDataTable(sql);(注:Utils为工具类,里面写的为一些查询方法)

GridControlDataSource = dt;

(4)如果以上DataTable需要手动为其绑定值,即没有固定的sql来获取数据库的数据

DataTable table = new DataTable();

tableColumnsAdd("check", SystemTypeGetType("SystemBoolean")); (该列为表格的复选框列,需要在列属性中设置为CheckEdit,并将类型设置为Boolean)

tableColumnsAdd("StuNo");

tableColumnsAdd("StuName");

tableColumnsAdd("StuSex");

tableColumnsAdd("StuAge");

DataRow dr = tableNewRow();

dr[1] = "010";

dr[2] = "张三";

dr[3] = "男"

dr[4] = "23";

tableRowsAdd(dr);

gridControl1DataSource = table;

gridView1BestFitColumns(); //使表格列自适应整个表格,内容少则表格显示得短,如果列的内容很多,在品目上显示不完,那么就自动产生横向滚动条

gridView1为gridControl中的表格,gridControl和girdView是一体的,gridControl相当于gridView的外壳

(5)获取表格数据显示的列的总数

int rowCount = gridView1DataRowCount;

//获取表格的宽度

int width = thisgridControl1Width;

//为列设置宽度

gridView1Columns["StuNo"]Width = width - 190;

(6)获取选中的复选框行(即在表格中勾选复选框)

DataTable dt = (DataTable)gridControl1DataSource;

//获取选中的学生编号

string str = "";

for (int i = 0; i < dtRowsCount; i++)

{

if (dtRows[i]["check"] != DBNullValue)

{

if (ConvertToBoolean(dtRows[i]["check"]) == true)

{

str += dtRows[i]["StuNo"]+",";

}

}

}

(7)全选

DataTable dt = (DataTable)gridControl1DataSource;

if (dt == null)

{

return;

}

if (dtRowsCount > 0)

{

for (int i = 0; i < dtRowsCount; i++)

{

dtRows[i]["check"] = true;

}

}

这涉及到Execl读取了。

1、建议先建一个类ExcelHelper,需要引用dll,不想麻烦的话直接用微软的的MicrosoftOfficeInteropExcel就行,当然了,推荐NPOI,开源的,百度下载。参考一些常用写法,在这个类里写好读取Excel的方法,比如ExcelToDataTable(),将Excel读出来的数据转成DataTable型变量。

后续有更多Execl相关的 *** 作的话,都在这个类里实现,方便移植。

2、导入时给DataGridView赋值就行。调用ExcelHelperExcelToDataTable()把Excel内容对应的DataTable取出来,然后赋给DataGridView的DataSource属性。

NET 平台下 DataGridView 控件可以满足你的需求,不过定制起来很麻烦,例如合并单元格。要重写 CellPainting 函数。

第三方控件可以使用 Spread 表格控件,不仅可以绑定数据源,还可以兼容Excel,并且拥有强大的数据可视化效果。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/12155668.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存