vb net中datagrid的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中的DataGrid

在.NET编程中,我们常常要通过控件DataGrid来显示数据库中的数据信息。DataGrid 按应用不同分为基于网页用的WEBform DataGrid和基于windows应用程序的WINform DataGrid。

一、winform DataGrid

利用DataGrid显示数据的过程如图1所示。

图1

首先通过去访问数据库,并在内存中生成一个数据表DataSet,然后再把这个DataSet通过属性DefaultView输出填充到DataGrid,显示在屏幕上。现设有一个短信接收数据表,它里面有4个字段:pid、shoujihaoma、neirong、jsshijian,用DataGrid显示此数据表的数据程序代码如下:

SqlConnection myConnection = new SqlConnection("server=liusw;User

ID=sa;Password=sa;database=sms");

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM js", myConnection);

DataSet ds = new DataSet();

da.Fill(ds, "js");

dataGrid2.DataSource =ds.Tables["js"].DefaultView;

myConnection.Close();

这段代码运行的结果如图2所示:

图2

然而,很多时候我们不使用这种把整个数据表原装不动地全部显示的方式,而是根据自己的需要设计DataGrid。例如,我们在显示的时候自定义表中的列名(字段名),选择性地显示我们所需要的数据。为了对数据进行相关的操作,在DataGrid中还可以增加一些自定义列,如复选框列等。为此在实际应用中,我们用得更多的是自定义DataGrid。下面用一个例子加以说明。还是上面的数据表,现在我们通过DataGrid来显示数据表的shoujihaoma、neirong、jsshijian这三个字段的数据,并增加一个复选框列,通过这一列来达到选择删除和提取电话号码的功能。要自定义DataGrid首先要对DataGrid的一些基本知识有所了解,图3是winform下的DataGrid的基本结构:

图3

Datagrid是由行(row)与列(column)组成的,行与列的交互,组成一个个单元(cell)。要自定义DataGrid就需要能控制每一个cell的变化,从而使row与column发生变化,最终形成Datagrid的变化。

Datagrid的默认结构,是把DatagridColumnStyle(列格式)设定为DatagridTextBoxColumn 列的结构,即datagrid的列设为由textbox组成。因此每一个cell都是一个textbox。如果把某一列的DatagridColumnStyle设定为DatagridBoolColumn列结构,就可以在该列中添加checkbox控件,使cell的值为boolean类型(逻辑类型)的值。对于DatagridTextBoxColumn 我们也可以通过自定义列,加入combox(下拉框控件)。HeaderText是列头名称。

图4是从数据库到产生DataGrid的整个过程:

图4

首先通过访问数据库,从而在内存中生成一个数据表DataSet,然后构建一个自定义DataGrid样式表,把这个样式表添加进DataGrid中,并同时把DataSet中的数据按样式表的格式填充到DataGrid中,这样就生成了一个DataGrid的视图,在屏幕中显示出来,以下是实现的源代码:

V oid jieshoushuju()

{

SqlConnection myConnection = new SqlConnection("server=liusw;User

ID=sa;Password=sa;database=sms");

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM js", myConnection);

DataSet ds = new DataSet();

da.Fill(ds, "js");

int Ro2=ds.Tables["js"].Rows.Count;//统计DataSet的总行数

//以上代码产生一个DataSet

DataColumn Check=new DataColumn("xz");

Check.DataType=System.Type.GetType("System.Boolean");

Check.DefaultValue=false;//初始默认值

ds.Tables["js"].Columns.Add(Check);

//以上代码是构建(自定义)一个Boolean列并把该列添加到DataSet中,此列将在DataGrid中嵌入checkbox(复选框)控件。

DataColumn combobox=new DataColumn(“xzcz”);

combobox.DataType=System.Type.GetType("System.String");

combobox.DefaultValue=" ";

ds.Tables["js"].Columns.Add(combobox);

//以上代码是构建(自定义)一个TextBox列,并添加到DataSet中,此列将在DataGrid中嵌入combox (下拉框)控件。

到这里为止,我们已经构建了两个新列,并添加到DataSet中,此时DataSet中共有6个列,分别是pid、shoujihaoma、neirong、jsshijian、xz、xzcz,前四列是源数据表的字段,后两列是自定义添加上去的列。

下面的代码是构建一个DataGrid样式表。

DataGridTableStyle ts=new DataGridTableStyle(); //定义一个DataGrid样式表

ts.MappingName=ds.Tables["js"].TableName; //样式表的数据由DataSet映射而来

ts.RowHeadersVisible=false;

DataGridTextBoxColumn tc;

tc=new DataGridTextBoxColumn();//定义样式表的第一列

tc.HeaderText="编号";//列头名称

tc.MappingName=ds.Tables["js"].Columns[0].ColumnName;//列数据,这里的Columns[0]表示DataSet

中的第一列数据,即这一列的数据由DataSet中的第一列数据映射而来。

ts.PreferredColumnWidth=0;//此列样式表的列宽,这里为0,表示隐藏此列

ts.PreferredRowHeight=30;// 此列样式表的列高

ts.AlternatingBackColor=Color.LightGray;//使用隔行交替颜色

ts.GridColumnStyles.Add(tc);//把此列添加到样式表

tc=new DataGridTextBoxColumn();//定义样式表的第二列

tc.HeaderText="手机号码";

tc.MappingName=ds.Tables["js"].Columns[1].ColumnName; //DataSet映射列

ts.PreferredColumnWidth=80;

ts.PreferredRowHeight=30;

ts.AlternatingBackColor=Color.LightGray;

ts.AllowSorting=false;

ts.GridColumnStyles.Add(tc);

tc=new DataGridTextBoxColumn();//定义样式表的第三列

tc.HeaderText="短信内容";

tc.MappingName=ds.Tables["js"].Columns[2].ColumnName; //DataSet映射列

ts.PreferredColumnWidth=360;

ts.PreferredRowHeight=30;

ts.AlternatingBackColor=Color.LightGray;

ts.GridColumnStyles.Add(tc);

tc=new DataGridTextBoxColumn();//定义样式表的第四列

tc.HeaderText="发送时间";

tc.MappingName=ds.Tables["js"].Columns[3].ColumnName;//DataSet映射列

ts.PreferredColumnWidth=70;

ts.PreferredRowHeight=30;

ts.AlternatingBackColor=Color.LightGray;

ts.GridColumnStyles.Add(tc);

相关文档
最新文档