动态创建GridView的列(1)

新建一个web站点实例
在Visual Studio里新建一个web站点。拖拽一个GridViw控件和一个SqlDataSource控件到默认的webform上。不要在设计阶段设置控件的任何属性,我们将通过编码实现它的功能。

下面给出在Page_Load事件中的代码

None.gif protected   void  Page_Load( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    SqlDataSource1.ConnectionString 
= @"data source=.;initial catalog=northwind;integrated security=true";
InBlock.gif    SqlDataSource1.SelectCommand 
= "select employeeID,FirstName,LastName from employees";
InBlock.gif    SqlDataSource1.UpdateCommand 
= "update employees set firstname=@FirstName,lastname=@LastName where employeeid=@EmployeeID";
InBlock.gif    SqlDataSource1.UpdateParameters.Add(
"@FirstName""");
InBlock.gif    SqlDataSource1.UpdateParameters.Add(
"@LastName""");
InBlock.gif    SqlDataSource1.UpdateParameters.Add(
"@EmployeeID""");
InBlock.gif
InBlock.gif    
if (!IsPostBack)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        GridView1.DataSourceID 
= "SqlDataSource1";
InBlock.gif        GridView1.AutoGenerateColumns 
= false;
ExpandedSubBlockStart.gifContractedSubBlock.gif        GridView1.DataKeyNames 
= new string[] dot.gif"EmployeeID" };
InBlock.gif        GridView1.AllowPaging 
= true;
InBlock.gif        GridView1.AllowSorting 
= true;
InBlock.gif        GridView1.PageSize 
= 5;
InBlock.gif
InBlock.gif        BoundField bf1 
= new BoundField();
InBlock.gif        BoundField bf2 
= new BoundField();
InBlock.gif        BoundField bf3 
= new BoundField();
InBlock.gif
InBlock.gif        bf1.HeaderText 
= "Employee ID";
InBlock.gif        bf1.DataField 
= "EmployeeID";
InBlock.gif        bf1.ReadOnly 
= true;
InBlock.gif        bf1.SortExpression 
= "EmployeeID";
InBlock.gif
InBlock.gif        bf2.HeaderText 
= "First Name";
InBlock.gif        bf2.DataField 
= "FirstName";
InBlock.gif        bf2.SortExpression 
= "FirstName";
InBlock.gif
InBlock.gif        bf3.HeaderText 
= "Last Name";
InBlock.gif        bf3.DataField 
= "LastName";
InBlock.gif        bf3.SortExpression 
= "LastName";
InBlock.gif
InBlock.gif        CommandField cf 
= new CommandField();
InBlock.gif        cf.ButtonType 
= ButtonType.Button;
InBlock.gif        cf.ShowCancelButton 
= true;
InBlock.gif        cf.ShowEditButton 
= true;
InBlock.gif
InBlock.gif        GridView1.Columns.Add(bf1);
InBlock.gif        GridView1.Columns.Add(bf2);
InBlock.gif        GridView1.Columns.Add(bf3);
InBlock.gif        GridView1.Columns.Add(cf);
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}


接下来我们一步一步地对这些代码做说明。

配置SQL数据源控件。
这段代码设置ConnectionString属性是给SQL数据源控件配置所需的数据库连接字符串所用的。在我们的例子里,我们将使用Notthwind数据库里的Employees表。然后给SelectCommand和UpdateCommand属性设置相应的select和update语句。update语句很重要,注意在update声明里所列举的参数名称要和数据表里列的名字相匹配。update声明包含三个参数,@FirstName, @LastName 和 @EmployeeID。这些参数然后会被添加到UpdateParameters集合里。

配置GridView控件
GridView控件使用SqlDataSource1作为它的数据源。代码里已经指出了如何设置GridView的DataSourceID属性。然后要设置更多的GridView属性,注意你只需要在"if"条件里设置这些属性一次。AutoGenerateColumns属性指明了GridView的列是否是自动建立的。应为我们希望通过编码增加列,所以要把这个属性设置为false。DateKeyNames属性是一个关键字列的字符串数组。AllowPaging和AllowSorting属性分别对应分页和排序特性。PageSize属性将页大小设为5。

创建BoundFiled列
GridView控件包含一些诸如BoundField,HyperLinkField,和TemplateField这些类型之类的列。在这个例子中我们将使用BoundField列。我们需要给EmployeeID,FirstName和LastNam分别提供三个BoundFiled列。一个bound filed是通过声明BoundField来创建的。BoundField的HeaderText属性是用来指出列的标题的。是否给出SortExpression属性决定着bound filed是否可以被排序。如果SortExpression属性设置成了一个列的名字,那么bound field将以此为基础进行排序。EmployeeID列是作为关键字被显示的,所以要把它的ReadOnly属性设置为true,其用意是该列不能被编辑。

为了提供编辑特性,你需要给GridView增加一个CommandField列。其ButtonType属性用来指明按钮是以何种形式来呈现的,其可能的值有Button,LinkButton和ImageButton。ShowCancelButton和ShowEditButton属性决定了是否显示编辑和取消按钮。

一旦我们创建了列,它们就会在GridView中增加相应的列。

本文到此结束!如果你运行这个webform将会如下显示。
gridviwdyncol1.jpg

你可以测试GridView的分页,排序和编辑等属性。

转载于:https://www.cnblogs.com/spark_wu/archive/2009/04/13/1434880.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值