C#Winform程序,怎样实现这种表格

C#Winform程序,怎样实现这种表格,第1张

如果是表格,有多种方式。

一种是使用dev的空间组,他的gridcontrol非常的强大。你可以在其中加入图片,下拉框,搜索框等各种共呢个。

如果你需要导出成各种格式的话。那就建议你使用grid++,这个效果显著。90%的表格都能打印和导出。

这是过去曾参考应用过的方法摘一段给你应急:

一、首先处理好数据库连接字串

Excel2000-2003:

string

connStr

=

"Microsoft.Jet.Oledb.4.0Data

Source='c:\test.xls'Extended

Properties=\"Excel

8.0HDR=YesIMEX=1\""

Excel2007:

string

connStr

=

"Microsoft.Ace.OleDb.12.0Data

Source='c:\test.xlsx'Extended

Properties=\"Excel

12.0HDR=YesIMEX=1\""

其中:

HDR

(

Header

Row

)设置:

若指定值为Yes,代表

Excel

档中的工作表第一行是栏位名称

若指定值为

No,代表

Excel

档中的工作表第一行就是资料了,没有栏位名称

IMEX

(

IMport

EXport

mode

)设置

IMEX=0

时为"汇出模式",这个模式开启的

Excel

档案只能用来做"写入"用途。

IMEX=1

时为"汇入模式",这个模式开启的

Excel

档案只能用来做"读取"用途。

IMEX=2

时为"连结模式",这个模式开启的

Excel

档案可同时支援"读取"与"写入"用途。

二、进行表格数据的查询、插入和更新:

(假设Excel文件text.xls中存在Excel表单tree,有2列分别为id,name)

1、查询

String

sql

=

"select

id,

name

from

[tree$]"

String

sql

=

"select

id,

name

from

`tree$`

2、插入

String

sql

=

"insert

into

[tree$]

(id,name)

values(1,'testname')

3、更新

String

sql

=

"update

[tree$]

set

name='name2'

where

id=1

4、数据的删除

在OleDB的连接方式下,不可以使用delete

from

语句来删除某表中的某一条记录。确切的说,在此模式下,将无法删除表中的记录。即使用update语句将所有的字段写成null,打开excel文件后依然会发现保留了该空行,而且在使用oleDB连接进行查询时,依然会查询到这条空数据。

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 = Utils.ExecuteDataTable(sql)(注:Utils为工具类,里面写的为一些查询方法)

GridControl.DataSource = dt

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

DataTable table = new DataTable()

table.Columns.Add("check", System.Type.GetType("System.Boolean"))(该列为表格的复选框列,需要在列属性中设置为CheckEdit,并将类型设置为Boolean)

table.Columns.Add("StuNo")

table.Columns.Add("StuName")

table.Columns.Add("StuSex")

table.Columns.Add("StuAge")

DataRow dr = table.NewRow()

dr[1] = "010"

dr[2] = "张三"

dr[3] = "男"

dr[4] = "23"

table.Rows.Add(dr)

gridControl1.DataSource = table

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

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

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

int rowCount = gridView1.DataRowCount

//获取表格的宽度

int width = this.gridControl1.Width

//为列设置宽度

gridView1.Columns["StuNo"].Width = width - 190

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

DataTable dt = (DataTable)gridControl1.DataSource

//获取选中的学生编号

string str = ""

for (int i = 0i <dt.Rows.Counti++)

{

if (dt.Rows[i]["check"] != DBNull.Value)

{

if (Convert.ToBoolean(dt.Rows[i]["check"]) == true)

{

str += dt.Rows[i]["StuNo"]+","

}

}

}

(7)全选

DataTable dt = (DataTable)gridControl1.DataSource

if (dt == null)

{

return

}

if (dt.Rows.Count >0)

{

for (int i = 0i <dt.Rows.Counti++)

{

dt.Rows[i]["check"] = true

}

}


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

原文地址: http://outofmemory.cn/yw/11748131.html

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

发表评论

登录后才能评论

评论列表(0条)

保存