vb net中datagrid的使用.docx

上传人:b****8 文档编号:12948330 上传时间:2023-06-09 格式:DOCX 页数:22 大小:239.37KB
下载 相关 举报
vb net中datagrid的使用.docx_第1页
第1页 / 共22页
vb net中datagrid的使用.docx_第2页
第2页 / 共22页
vb net中datagrid的使用.docx_第3页
第3页 / 共22页
vb net中datagrid的使用.docx_第4页
第4页 / 共22页
vb net中datagrid的使用.docx_第5页
第5页 / 共22页
vb net中datagrid的使用.docx_第6页
第6页 / 共22页
vb net中datagrid的使用.docx_第7页
第7页 / 共22页
vb net中datagrid的使用.docx_第8页
第8页 / 共22页
vb net中datagrid的使用.docx_第9页
第9页 / 共22页
vb net中datagrid的使用.docx_第10页
第10页 / 共22页
vb net中datagrid的使用.docx_第11页
第11页 / 共22页
vb net中datagrid的使用.docx_第12页
第12页 / 共22页
vb net中datagrid的使用.docx_第13页
第13页 / 共22页
vb net中datagrid的使用.docx_第14页
第14页 / 共22页
vb net中datagrid的使用.docx_第15页
第15页 / 共22页
vb net中datagrid的使用.docx_第16页
第16页 / 共22页
vb net中datagrid的使用.docx_第17页
第17页 / 共22页
vb net中datagrid的使用.docx_第18页
第18页 / 共22页
vb net中datagrid的使用.docx_第19页
第19页 / 共22页
vb net中datagrid的使用.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

vb net中datagrid的使用.docx

《vb net中datagrid的使用.docx》由会员分享,可在线阅读,更多相关《vb net中datagrid的使用.docx(22页珍藏版)》请在冰点文库上搜索。

vb net中datagrid的使用.docx

vbnet中datagrid的使用

VS.NET中的DataGrid

在.NET编程中,我们常常要通过控件DataGrid来显示数据库中的数据信息。

DataGrid按应用不同分为基于网页用的WEBformDataGrid和基于windows应用程序的WINformDataGrid。

一、winformDataGrid

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

图1

首先通过ADO.NET去访问数据库,并在内存中生成一个数据表DataSet,然后再把这个DataSet通过属性DefaultView输出填充到DataGrid,显示在屏幕上。

现设有一个短信接收数据表,它里面有4个字段:

pid、shoujihaoma、neirong、jsshijian,用DataGrid显示此数据表的数据程序代码如下:

SqlConnectionmyConnection=newSqlConnection("server=liusw;UserID=sa;Password=sa;database=sms");

SqlDataAdapterda=newSqlDataAdapter("SELECT*FROMjs",myConnection);

DataSetds=newDataSet();

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

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

Voidjieshoushuju()

{

SqlConnectionmyConnection=newSqlConnection("server=liusw;UserID=sa;Password=sa;database=sms");

SqlDataAdapterda=newSqlDataAdapter("SELECT*FROMjs",myConnection);

DataSetds=newDataSet();

da.Fill(ds,"js");

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

//以上代码产生一个DataSet

 

DataColumnCheck=newDataColumn("xz");

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

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

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

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

 

DataColumncombobox=newDataColumn(“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样式表。

DataGridTableStylets=newDataGridTableStyle();//定义一个DataGrid样式表

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

ts.RowHeadersVisible=false;

DataGridTextBoxColumntc;

 

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

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=newDataGridTextBoxColumn();//定义样式表的第二列

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=newDataGridTextBoxColumn();//定义样式表的第三列

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=newDataGridTextBoxColumn();//定义样式表的第四列

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);

 

DataGridBoolColumndc=newDataGridBoolColumn();//定义样式表第五列,此列为BOOL列,是嵌入checkbox控件列。

dc.HeaderText="选择";

dc.MappingName=ds.Tables["js"].Columns[4].ColumnName;//自定义列

ts.PreferredColumnWidth=40;

ts.PreferredRowHeight=30;

ts.AlternatingBackColor=Color.LightGray;

ts.GridColumnStyles.Add(dc);

 

DataGridTextBoxColumncombo=newDataGridTextBoxColumn();//定义样式表第六列

ComboBoxcmbxo=newComboBox();//定义一个ComboBox控件

cmbxo.Items.AddRange(newobject[]{"显示","转发"});//给ComboBox控件增加两个选择量

cmbxo.Cursor=Cursors.Arrow;//获取鼠标位置

cmbxo.DropDownStyle=ComboBoxStyle.DropDownList;//点击鼠标后显示控件

cmbxo.Dock=DockStyle.Fill;//控件外观自适应调整

combo.TextBox.Controls.Add(cmbxo);//把定义好的ComboBox控件添加到此列

combo.HeaderText="选择操作";//列头名称

combo.MappingName=ds.Tables["js"].Columns[5].ColumnName;//自定义列

ts.PreferredColumnWidth=60;

ts.PreferredRowHeight=30;

ts.AlternatingBackColor=Color.LightGray;

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

cmbxo.SelectionChangeCommitted+=newEventHandler(cmbxo_SelectionChangeCommitted);//ComboBox控件选择后所使用的方法

 

dataGrid2.TableStyles.Add(ts);//把设置好的dataGrid样式表添加到dataGrid中

dataGrid2.DataSource=ds.Tables["js"].DefaultView;//把DataSet的数据按照式样表的格式填充(映射)到dataGrid,并按照上面的构建生成表的视图显示出来。

myConnection.Close();

}

上面的代码运行后的效果如图5所示。

图5

这里特别讲一讲下拉框列的处理过程,在平常状况下,选择操作列中的cell还是以textbox的形式进行显示的,下拉框的出现是被鼠标点中的cell(落入焦点)才被激发的,而后,该cell就是一个实实在在的下拉框了,当鼠标离开该cell后,cell又恢复成一个textbox的模样了。

好了,DataGrid已经构建完成了,接下来是处理选中后的处理方法问题。

首先介绍复选框选中后的处理方法,这里以删除被复选框选中的记录为例。

思路:

用一个循环对DataGrid中的所有行的复选框进行检索,如果复选框为选中状态(状态值是true)则把该行的PID提取出来,并以此为判断条件执行删除操作,代码如下:

privatevoidbutton5_Click(objectsender,System.EventArgse)

{

int@pid;

for(inti=0;i

{

if(Convert.ToBoolean(this.dataGrid2[i,4])==true)//如果复选框被选中

{

@pid=Convert.ToInt32(this.dataGrid2[i,0]);//提取所在行的PID值(此值在0列)

stringstrSQL="DELETEFROMjsWHEREpid="+@pid;

SqlConnectionA=newSqlConnection(Connection);

SqlCommandB=newSqlCommand(strSQL,A);

A.Open();

B.ExecuteNonQuery();//执行删除操作

A.Close();

}

}

this.dataGrid2.TableStyles.Clear();//清空DataGrid

jieshoushuju();//重新构建DataGrid

}

下面介绍下拉框选中后的操作,这里以选中下拉框的“显示”后,弹出一个对话框,在这个对话中显示接收到的短信内容为例。

思路:

首先获取下拉框所在行的行号,然后找到该行的短信内容列提取短信内容,通过对话框显示出来。

代码如下:

voidcmbxo_SelectionChangeCommitted(objectsender,System.EventArgse)

{

intdd1=this.dataGrid2.CurrentCell.RowNumber;//获取处于焦点下的下拉表所在的行

if(((ComboBox)sender).SelectedItem.ToString()=="显示")

{

MessageBox.Show(this.dataGrid2[dd1,2].ToString());//显示短信内容

}

}

二、webformDataGrid

.NET基于WEB的架构分为程序分为前台程序(ASPX页面程序)和后台程序(服务器端程序),所谓前台程序是一个显示界面程序,它运行于客户端,其显示的内容由后台程序提供。

后台程序运行于服务器,通常都是类文件,它负责接收客户端的请求及提交来的数据,运行后把运行结果送回到客户端的前台程序,通过前台程序显示出来。

所以DataGrid都是通过前台程序设置自定义模板列来构建的。

默认的DataGrid的格式如图6,下面是它的代码:

前台代码:

DataGridid="DataGrid1"runat="server"Font-Size="X-Small">

DataGrid>

后台代码:

privatevoidPage_Load(objectsender,System.EventArgse)

{

stringstrSQL="SELECT*FROMjs";

SqlConnectionA=newSqlConnection("DataSource=liusw;userid=sa;password=821226;InitialCatalog=sms");

SqlDataAdapterD=newSqlDataAdapter(strSQL,A);

DataSetds=newDataSet();

D.Fill(ds,"js");

DataGrid1.DataSource=ds.Tables["js"];

DataGrid1.DataBind();

}

图6

在WEB下,DataGrid提供了比较灵活多样的自定义模式,例如它可以通过对DataGrid的属性设置,轻松地完成分页显示、嵌入删除、数据排序、数据修改更新等操作,当然也可以象在WINFORM里一样,在DataGrid中嵌入复选框和下拉框等来完成更多的功能。

在WEB下,DataGrid的构建主要由前台程序完成,后台程序则完成数据的填充和相关事件的处理方法。

以下还是以WINFORM的例子所使用的数据库,在WEBFORM下构建一个DataGrid。

在这个DataGrid中完成数据删除、数据编辑更新、列数据排序等功能,而且在DataGrid中嵌入一复选框列,通过它达到提取多个电话号码回复的功能。

前台代码:

datagridid="DataGrid1"runat="Server"

AllowSorting="True"//列头排序功能是否有效

OnSortCommand="DataGridSort"//排序事件

AutoGenerateColumns="False"//是否容许关联的数据源自动生成列(当采用自定义DataGrid时应设为False,如采用默认模式则设为True)

HeaderStyle-BackColor="#FFCC99"//表头颜色

AlternatingItemStyle-BackColor="#FFFFFF"//表格线颜色

BorderColor="Black"//边框颜色

cellpadding="3"//单元格边距

DataKeyField="pid"//索引关键字

OnDeleteCommand="ItemsGrid_Dele"//数据删除事件

OnEditCommand="ItemsGrid_Edit"//数据编辑事件

OnCancelCommand="ItemsGrid_Cancel"//取消数据编辑事件

OnUpdateCommand="ItemsGrid_Update"//数据更新事件

BackColor="White"//控件背景色

BorderStyle="None"//边框式样

PageSize="8"//每页显示的记录数

PagerStyle-HorizontalAlign="Right"//水平对齐方式

OnPageIndexChanged="DataGridPage"//分页格式

AllowPaging="True">//分页功能是否有效

//分页显示格式,这里为右对齐,用数字显示页号码来连接其他页面

//列体交替背景颜色

//列体背景颜色

//列头背景颜色

 

EditCommandColumn//数据更新列

ButtonType="LinkButton"//按钮类型

UpdateText="更新"//按钮1中显示的文字

HeaderText="数据更新"//列名

CancelText="取消"//按钮2中显示的文字

EditText="编辑">//主按钮显示的文字

//列头格式

//列体格式

EditCommandColumn>

 

ButtonColumn//自定义按钮列

Text="删除"//列单元显示的内容

HeaderText="删除"//列名

CommandName="Delete">//按钮事件名

//列头格式

//列体格式

ButtonColumn>

 

TemplateColumn

SortExpression="pid"//可排序字段(表明这个是排序列)

HeaderText="编号">//自定义模板列

//列头格式

//列体格式

<%#DataBinder.Eval(Container.DataItem,"pid")%>//列体显示的数据来源

TemplateColumn>

 

TemplateColumnHeaderText="手机号">//自定义模板列

//列头格式

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2