ITPub博客

首页 > Linux操作系统 > Linux操作系统 > asp.net2.0揭秘读书笔记四:GridView控件更新数据处理并发问题

asp.net2.0揭秘读书笔记四:GridView控件更新数据处理并发问题

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-05-12 15:14:43 0 删除 编辑

GridView可以同时保存每个数据列的原始值和修改后的新值,所以能够处理并发冲突。

<%@ Page Language="C#" %>

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

    <title>Concurrencytitle>

head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:GridView

        id="grdMovies"

        DataSourceID="srcMovies"

        DataKeyNames="Id"

        AutoGenerateEditButton="true"

        Runat="server" />

    <asp:SqlDataSource

        id="srcMovies"

        ConflictDetection="CompareAllValues"

        OldValuesParameterFormatString="original_{0}"

        ConnectionString="<%$ ConnectionStrings:Movies %>"

        SelectCommand="SELECT Id,Title,Director FROM Movies"

        UpdateCommand="UPDATE Movies SET Title=@Title, Director=@Director

            WHERE Id=@original_Id AND Title=@original_Title AND Director=@original_Director"

        Runat="server" />

    div>

    form>

body>

html>

 

在上面的代码清单中,SqlDataSource控件的ConflicatDetection属性和OldValuesParameterFormatString属性都被赋值,这两个属性会使SqlDataSource控件为每一个数据列保持此列的原始值和修改后的值。

ConflicatDetection属性可以为以下两个值之一:

CompareAllValues

OverwriteChanges

ConflicatDetection的默认值是OverwriteChanges,这个会导致SqlDataSource控件直接使用新值覆盖到数据列中。如果设为CompareAllValuesSqlDataSource控件会为每一列保持原始值和修改后的值。

OldValuesParameterFormatString属性用来为列的原始值提供唯一的名称,例如,SqlDataSource控件的UpdateCommand属性值如下所示:

   UpdateCommand="UPDATE Movies SET Title=@Title, Director=@Director

            WHERE Id=@original_Id AND Title=@original_Title AND Director=@original_Director"

 

@original_Id,@original_Title,@original_Director参数表示这些列的原始值,如果谁先修改了这些记录,这本次修改则被忽略。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-594856/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5315146