Gridview删除更新语句设置文档格式.docx

上传人:b****6 文档编号:18942025 上传时间:2023-01-02 格式:DOCX 页数:18 大小:203.31KB
下载 相关 举报
Gridview删除更新语句设置文档格式.docx_第1页
第1页 / 共18页
Gridview删除更新语句设置文档格式.docx_第2页
第2页 / 共18页
Gridview删除更新语句设置文档格式.docx_第3页
第3页 / 共18页
Gridview删除更新语句设置文档格式.docx_第4页
第4页 / 共18页
Gridview删除更新语句设置文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Gridview删除更新语句设置文档格式.docx

《Gridview删除更新语句设置文档格式.docx》由会员分享,可在线阅读,更多相关《Gridview删除更新语句设置文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

Gridview删除更新语句设置文档格式.docx

除了获取数据之外,SqlDataSource还可以以非常相似的办法通过提供INSERT、UPDATE以及DELETE语句来插入、更新以及删除数据。

只需简单的给InsertCommand、UpdateCommand以及DeleteCommand属性赋上INSERT、UPDATE以及DELETE语句就可以了。

如果语句带有参数(这也是常有的事),把这些参数放到InsertParameters、UpdateParameters以及DeleteParameters集合里就可以了。

一旦InsertCommand、UpdateCommand或DeleteCommand的值被指定,相应数据Web控件的智能标签中的“允许插入”、“允许编辑”或“允许删除”选项将会变为可用。

为了说明这个问题,我们就以在教程使用SqlDataSource 

控件查询数据中创建的Querying.aspx为例,给它加上删除功能。

首先从SqlDataSource文件夹中打开InsertUpdateDelete.aspx和Querying.aspx。

在Querying.aspx的设计器中选择第一个例子中的SqlDataSource和GridView(就是ProductsDataSource和GridView1)。

选好了这两个控件之后,在“编辑”菜单中选择“复制”(或者直接Ctrl+C)。

然后,到InsertUpdateDelete.aspx的设计器中,并将这两个控件粘贴上去。

将这两个控件弄到InsertUpdateDelete.aspx上之后,在浏览器中测试一下这个页面。

你应该看到Products表中所有记录的ProductID、ProductName以及UnitPrice。

图一:

所有的产品都列出来了,并以ProductID 

进行了排序

添加SqlDataSource的DeleteCommand以及DeleteParameters 

属性

现在,我们拥有了一个简单的从Products表返回所有记录的SqlDataSource和一个用以显示这些数据的GridView。

我们的目标是扩展这个例子以允许用户可以通过GridView来删除产品。

要达到这个目标,我们需要给SqlDataSource控件的DeleteCommand以及DeleteParameters属性指定相关的值,并配置GridView以使其可以支持删除。

DeleteCommand以及DeleteParameters属性可以通过很多种方式进行指定:

∙通过声明标记代码;

∙通过设计器的属性窗口;

∙通过“配置数据源”向导中的 

“指定一个自定义SQL语句或存储过程”页;

∙ 

通过“配置数据源”向导中的“指定一个表或视图中的列”页上面的“高级”按钮,它将自动的生成DELETE语句,并自动生成DeleteCommand以及DeleteParameters属性所使用到的那些参数集合。

我们将在第二步中解释如何自动创建一个DELETE语句。

虽然“配置数据源”向导或声明标记代码也OK,不过现在我们还是使用设计器中的属性窗口。

在InsertUpdateDelete.aspx的设计器中,单击一下ProductsDataSource,然后打开属性窗口(在“视图”菜单中选择“属性窗口”,或直接按F4)。

选择DeleteQuery属性。

图二:

在属性窗口中选择DeleteQuery属性

SqlDataSource并没有DeleteQuery属性。

事实上,DeleteQuery是DeleteCommand和DeleteParameters属性的结合体,它仅仅在通过设计器查看属性窗口时才显示在那里。

如果你在源视图中查看属性窗口,你将只能找到DeleteCommand属性。

点击DeleteQuery属性中的那个按钮,这时会弹出“命令和参数编辑器”对话框(见图三)。

在这里,你可以指定DELETE语句并为其指定参数。

在“DELETE命令”输入框中填上如下代码(你可以手工填写,也可以使用查询生成器,反正随你高兴):

1

DELETE 

FROM 

Products

2

WHERE 

ProductID 

@ProductID

然后,点击“刷新参数”按钮以将@ProductID参数添加到下面的参数列表中。

图三:

命令和参数编辑器(译者注:

原文错了,“SelecttheDeleteQueryPropertyfromthePropertiesWindow”,这是图二的描述)

不要给这个参数赋值(保留其参数源为“无”)。

在我们向GridView添加了删除支持后,GridView将通过其DataKeys集合为按下了删除按钮的那一行自动提供这个参数值。

DELETE语句中使用的参数名必须跟GridView、DetailsView或FormView的DataKeyNames相同。

也就是说,我们专门把DELETE中的那个参数命名为@ProductID(而不是@ID),是因为Products表中主键列的名称为ProductID(因此GridView的DataKeyNames值也是这个)。

如果参数名与DataKeyNames不同,GridView将无法自动通过其DataKeys集合为这个参数赋值。

在“命令和参数编辑器”对话框中输入了与删除相关的信息之后,点击“确定”,并去到源视图中看看现在的声明标记代码:

<

asp:

SqlDataSource 

ID="

ProductsDataSource"

 

runat="

server"

ConnectionString="

%$ 

ConnectionStrings:

NORTHWNDConnectionString 

%>

"

3

SelectCommand=

4

SELECT 

[ProductID], 

[ProductName], 

[UnitPrice] 

FROM 

[Products]"

5

DeleteCommand="

DELETE 

Products 

WHERE 

@ProductID"

>

6

<

DeleteParameters>

7

Parameter 

Name="

ProductID"

/>

8

/DeleteParameters>

9

/asp:

SqlDataSource>

注意看看新添加的DeleteCommand属性和<

DeleteParameters>

节,还有名为productID 

的Parameter对象。

配置GridView以使其可以删除

由于添加了DeleteCommand属性,GridView的智能标签现在有了“允许删除”选项。

勾上这个复选框。

就像我们在概述插入、更新和删除数据中所讨论的那样,在GridView的ShowDeleteButton属性设为true的时候,这将使其添加一个CommandField。

如图四所示,当通过浏览器访问这个页面时,GridView中将包含一个删除按钮。

通过删除一些产品来测试一下这个页面吧。

图四:

现在,每一个GridView行都包含了一个删除按钮

点击删除按钮之后,会引发一个回发,然后GridView将这一行的DataKeys集合赋值给ProductID参数,并调用SqlDataSource的Delete()方法。

接着,SqlDataSource控件就连接上数据库并执行这个DELETE语句。

最后GridView重新绑定这个SqlDataSource,并显示现在的产品集(刚刚被删除的那条记录就不见了)。

由于GridView使用其DataKeys集合来存放SqlDataSource的参数,所以我们必须注意要将GridView的DataKeyNames属性设置为主键列(也可能是复合主键),而且SqlDataSource的SelectCommand还必须要返回这些列才行。

此外,将SqlDataSource的DeleteCommand中的参数名设置为@ProductID也是非常重要的。

如果没有设置DataKeyNames属性,或者参数没有命名为@ProductsID,在点击删除按钮只会,虽然还是会有一个回发,但是将不会删除任何行。

图五向我们形象的描述了这个交互过程。

可以参考教程研究插入、更新和删除的关联事件以获取更多的有关通过数据WEB控件进行增删改操作所关联的事件链的详细信息。

图五:

在GridView中点击了删除按钮之后将调用SqlDataSource的Delete()方法

第二步:

自动生成INSERT、UPDATE以及DELETE语句

在第一步中我们了解到,INSERT、UPDATE以及DELETE语句可以通过属性窗口或控件的声明标记代码来进行指定。

不过,这需要我们手工编写SQL语句,这不仅无聊而且还容易出错。

还好,“配置数据源”向导的“指定一个表或视图中的列”页上提供了一个用于自动生成INSERT、UPDATE以及DELETE语句的选项。

好了,我们去看看这个自动生成的选项。

在InsertUpdateDelete.aspx的设计器中添加一个DetailsView,并将其ID属性设置为ManageProducts。

然后,在DetailsView的智能标签中选择创建一个新的数据源,并将其命名为ManageProductsDataSource。

图六:

创建一个名为ManageProductsDataSource的SqlDataSource

在“配置数据源”中选择NORTHWINDConnectionString,然后点击“下一步”。

在“配置Select语句”页中,选中“指定一个表或视图中的列”单选框,并在下拉框中选择Products表。

然后在下面的复选框列表中选中ProductID、ProductName、UnitPrice以及Discontinue列。

图七:

使用Products表,返回其ProductID、ProductName、UnitPrice以及Discontinue列

要根据选好的表和列自动生成INSERT、UPDATE以及DELETE语句,点击“高级”按钮并勾上“生成INSERT、UPDATE以及DELETE语句”复选框。

图八:

勾上“生成INSERT、UPDATE以及DELETE语句”复选框

只有当被选择的表含有主键且主键列包含在需要返回的列中时,“生成INSERT、UPDATE以及DELETE语句”复选框才会变为可选状态。

在“生成INSERT、UPDATE以及DELETE语句”复选框被选中之后,“使用乐观并发”复选框也会变为可选状态,它将会给最终的UPDATE和DELETE语句添加一个WHERE子句以提供乐观并发控制。

不过,现在我们不选它,我们会在下一节中介绍如何通过SqlDataSource进行乐观并发控制。

勾上了“生成INSERT、UPDATE以及DELETE语句”复选框之后,点击“确定”以返回“配置Select语句”页,然后点击“下一步”,接着点击“完成”以结束“配置数据源”向导。

在完成了这个向导之后,VisualStudio将立刻为DetailsView添加一些字段,其中ProductID、ProductName和UnitPrice对应的是BoundFields,Discontinued对应的是CheckBoxField。

在DetailsView的智能标签中,选中“允许分页”以使用户在访问这个页面时可以一页一页的查看产品。

还有清除DetailsView的Width和Height属性。

注意一下,这个智能标签中的“允许插入”、“允许编辑”以及“允许删除”的选项现在已经是可用的了。

这是因为SqlDataSource的InsertCommand、UpdateCommand以及DeleteCommand都含有了相应的SQL语句。

其声明标记代码如下所示:

DetailsView 

ManageProducts"

AllowPaging="

True"

AutoGenerateRows="

False"

DataKeyNames="

DataSourceID="

ManageProductsDataSource"

EnableViewState="

Fields>

BoundField 

DataField="

HeaderText="

InsertVisible="

ReadOnly="

SortExpression="

ProductName"

UnitPrice"

10

11

CheckBoxField 

Discontinued"

12

13

/Fields>

14

DetailsView>

15

16

17

18

DeleteCommand=

19

[Products] 

[ProductID] 

20

InsertCommand=

21

INSERT 

INTO 

([ProductName], 

[UnitPrice], 

[Discontinued])

22

VALUES 

(@ProductName, 

@UnitPrice, 

@Discontinued)"

23

24

[Discontinued]

25

26

UpdateCommand=

27

UPDATE 

SET 

[ProductName] 

@ProductName,

28

[Discontinued] 

@Discontinued

29

30

31

Type="

Int32"

32

33

UpdateParameters>

34

String"

35

Decimal"

36

Boolean"

37

38

/UpdateParameters>

39

InsertParameters>

40

41

42

43

/InsertParameters>

44

注意一下SqlDataSource控件是如何自动为其InsertCommand、UpdateCommand以及DeleteCommand属性赋值的。

InsertCommand、UpdateCommand以及DeleteCommand属性中所引用的列都是根据SELECT语句得到的。

也就是说,InsertCommand和UpdateCommand将只含有那些在SelectCommand中被指定的列,而不是Products表的所有列(除了ProductID,它被忽略是因为它是一个IDENTITY列,而IDENTITY列的值是不能修改的,只能在插入时自动赋值)。

还有,InsertCommand、UpdateCommand以及DeleteCommand属性的每一个参数都存在于相应的InsertParameters、UpdateParameters以及DeleteParameters集合中。

要打开DetailsView的数据修改功能,在其智能标签中构上“允许插入”、“允许编辑”以及“允许

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

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1