GridView中的如何判断是否更新的GridViewUpdatedEventArgs.AffectedRows 属性

AffectedRows属性是获取受更新操作影响的行数

这个方法经常用在防止多用户操作后的提示信息上。通常我们我们在使用SqlDataSource控件来绑定GridView或者是DetailView等控件。如果有更新,删除等数据库操作的时候,我们都会设置详细设置中的2个选项,一个是添加Insert,Updata等操作,还有个就是为了防止多用户同时操作的选项。这2个都打上钩后,我们在做更新操作时候如何知道是否有人已经发生了冲突,如何去设置提示"更新数据发生冲突,更新失败"这样的信息呢?

我们就可以在SqlDataSource控件的Updated事件中去写下面的代码

protected void sds_Updated(object sender, SqlDataSourceStatusEventArgs e)
{
        if (e.AffectedRows == 1)
        {
            Label1.Text = "更新数据发生冲突,更新失败";
        }
}

AffectedRows 属性是获取受更新操作影响的行数,如果为0,则表示没有更新。因为通常只更新一条记录,所以该属性通常包含一个为 0 或 1 的值。有时,在不引发异常的插入操作期间可能会发生错误。AffectedRows 属性通常用于验证是否插入了记录。下面的例子所用的事件是GridView控件的Updated事件,和SqlDataSource控件的Updated事件是一样的,更新操作后都会进入这2个事件,没有什么区别关系。以下是一个例子:(此示例鉴于MSDN)

    protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
    {
        if (e.Exception == null)
        {
            if (e.AffectedRows == 1)
            {
                //lblMessage是Lable控件用于显示具体信息
                lblMessage.Text = "updated successfully.";
                //显示更新后的数据和更新前的数据
                DisplayValues((OrderedDictionary)e.NewValues, (OrderedDictionary)e.OldValues);
            }
            else
            {
                lblMessage.Text = "An error occurred during the update operation.";
                //trueGridView 控件继续处于编辑模式
                e.KeepInEditMode = true;
            }
        }
        else
        {
            lblMessage.Text = e.Exception.Message;
            //true该异常被视作已处理,不会被 GridView 控件重新引发。如果此属性被设置为 false,异常将被重新引发。
            e.ExceptionHandled = true;
            //trueGridView 控件继续处于编辑模式
            e.KeepInEditMode = true;
        }
    }
    //显示更新后的数据和更新前的数据
    void DisplayValues(OrderedDictionary newValues, OrderedDictionary oldValues)
    {
        lblMessage.Text += "<br/></br>";

        for (int i = 0; i < oldValues.Count; i++)
        {
            lblMessage.Text += "Old Value=" + oldValues[i].ToString() +
              ", New Value=" + newValues[i].ToString() + "<br/>";
        }

        lblMessage.Text += "</br>";

    }

GridViewUpdatedEventArgs.KeepInEditMode 属性获取或设置一个值,该值指示在更新操作之后 GridView 控件是否应该继续处于编辑模式。默认情况下,GridView 控件在执行更新操作后将返回到只读模式。使用 KeepInEditMode 属性,可以指定 GridView 控件是否应继续处于编辑模式。若要使 GridView 控件继续处于编辑模式,请将此属性设置为 true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值