在GridView中使用DropDownList模板列

本文介绍在GridView中使用DropDownList模板列时,DropDownList从数据库主键表显示数据,并双向绑定外键的问题。

1.问题描述

数据库TestDB中表结构如下:

班级表 ClassClassIDClassName

ClassID

ClassName

1

一班

2

二班

3

三班

4

四班

 

学生表 StudentStuIDStuNameClassID

StuID

StuName

ClassID

1

张三

1

2

李四

1

3

王五

2

4

赵六

2

 

其中在Student.ClassID上建立外键约束,参照主键为Class.ClassID

创建视图view_Student

Create View view_Student As

SELECT dbo.Student.StuID, dbo.Student.StuName, dbo.Student.ClassID,

      dbo.Class.ClassName

FROM dbo.Student INNER JOIN

      dbo.Class ON dbo.Student.ClassID = dbo.Class.ClassID

 

本文要解决的问题是,将学生姓名和班级显示到GridView中(取自视图),在点“编辑”按钮进入编辑状态后,班级列使用DropDownListClass表中的所有班级名称显示出来,修改学生姓名和选择班级后,选择“更新”按钮可以更新Student表中的数据。效果如下图所示。

2.实现

(1)       新建一个ASP.NET网站,并新建GVTemplate.aspx网页。

(2)       在网页中拖入一个GridView,然后选择数据源为“<新建数据源…>”。

(3)       选择数据源类型为数据库,数据源ID使用默认的SqlDataSource1,确定。

(4)       在数据库连接中,选择“新建连接”按钮,弹出新建连接的对话框。

(5)       服务器名输入“localhost”,选择前面创建的表和视图所在的数据库,我的是TestDB,确定。

(6)       点击“下一步”按钮,将连接字符串存放在配制文件中,名字取默认的“TestDBConnectionString”,下一步。

(7)       在配制Select语句界面,选择“指定自定义SQL语句或存储过程”,下一步。

(8)       出现的“定义自定义语句或存储过程”对话框中,上面有四个选项卡,分别是SelectInsertUpdateDelete,本例我们只显示和修改,因此只填写SelectUpdate语句。

(9)       选择Select选项卡,输入语句:SELECT view_Student.* FROM view_Student。该语句从视图中选择数据。

(10)   选择Update选项卡,输入语句:UPDATE Student SET StuName = @StuName, ClassID = @ClassID WHERE (StuID = @original_StuID)。该语句修改表StudentStuNameClassID

(11)   选择“下一步”,然后点“完成”按钮,这样就创建了绑定的数据源。

(12)   选中新创建的数据源“SqlDataSource1”,找到其OldValuesParameterFormatString属性,将属性值修改为original_{0}。这样在编辑状态选择“更新”时,Update语句中的@original_StuID就会取更新前旧值,而@StuName@ClassID会取输入的新值。

(13)   选择GridView,确认其DataKeyNames属性的值为StuID

(14)   GridViewAutoGenerateEditButton属性设置为true,为GridView增加编辑按钮。

(15)   找到GridViewColumns属性,点击后面的“”按钮,弹出“字段”对话框。

(16)   在“选定的字段”列表框中,只保留StuName列,其它列删除,并将该列的HeaderText属性改为“姓名”。

(17)   在“可用字段”列表中,选择最下面的TemplateField,选择“添加”按钮,这样就将一个模板列加入到了选定的字段中,将其HeaderText属性改为“班级”,确定。

(18)   GridView上点右键,选择“编辑模板/Column[1]-班级”菜单,进入模板列编辑模式,本例需要修改的是ItemTemplateEditItemTemplat

(19)   从工具箱拖一个labelItemTemplate中,该Label用于在浏览模式下显示班级名称。

(20)   在此Label上点击右键,选择“编辑DataBindings”菜单,选中可绑定属性中的“Text”,然后在右边的“绑定到”中选择“ClassName”,确定。

(21)   从工具箱拖一个DropDownListEditItemTemplate中,然后选择“选择数据源”菜单,弹出的选择数据源对话框中,按照前面所述新建一个数据源,此数据源只需输入Select语句:SELECT Class.* FROM Class,其它三个语句不必输入。

(22)   新建数据源完成后,在“选择数据源”的最后一步,将“DropDownList中显示的字段”选择为“ClassName”,“DropDownList值选择的字段”为“ClassID”,确定。

(23)   然后选择DropDownList的“编辑DataBings”,选择可绑定属性“SelectedValue”,绑定到ClassID,注意“双向数据绑定”项前要打上勾,确定。

(24)   结束模板编辑,运行,点击某行的编辑按钮察看结果,然后选择另外的班级后,选择更新按钮,察看结果。

 转自 http://blog.csdn.net/Ivy_zheng/archive/2007/05/15/1609244.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值