zoukankan      html  css  js  c++  java
  • ObjectDataSource用法之六(刪除)

    1.  准備條件

    參數:ObjectDataSource用法之一(SelectMethod來進行簡單的邦定)

    2.  在業務處理類中添加如下方法

    public void DeleteItem(string UID)
    {
        HttpContext.Current.Response.Write("UID = " + UID + "<br/>");
    }

    3. aspx頁面內容為

    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
        SelectMethod="AllItems" DeleteMethod="DeleteItem" OldValuesParameterFormatString="{0}" TypeName="Member">
        <DeleteParameters>
            <asp:Parameter Name="UID" />
        </DeleteParameters>
    </asp:ObjectDataSource>
    <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1" AutoGenerateDeleteButton="true" DataKeyNames="UID">
    </asp:GridView>

    說明: 參考ObjectDataSource用法之五(更新) 

    此外有两点需要在使用删除的时候注意:
    1,在ConflictDetection=OverwriteChanges的时候,使用ObjectDataSource的DeleteMethod必须要在GridView上声明DataKeyNames,因为在没有设置DataObjectType的时候,ObjectDataSource只会给DeleteMethod传递一个参数,例如:OldValuesParameterFormatString="old_{0}"且DataKeyNames="id",那么它只会把id列的原始值old_id作为参数传递给后台的DeleteMehod,所以如果不设置DataKeyNames,DeleteMethod不会接受到任何值,也就无法进行删除操作!而在设置了DataObjectType的时候,只有设置了DataKeyNames,ObjectDataSource才会把各个Detele的Parameter的值传递给DeleteMethod的实体参数的属性,否则你会发现DeleteMethod的实体参数的所有属性都为空或定义时候的默认值。

    2,在ConflictDetection=CompareAllValues的时候,不必设置DataKeyNames,因为就算不设置DataKeyNames,GridView还是会将可编辑列的原始值全部传入DeleteMethod的函数参数或函数参数的实体属性。

    ConflictDetection
    会在后面用法八讲到

  • 相关阅读:
    读书笔记—CLR via C#线程25-26章节
    算法回顾--N皇后问题简单回顾
    编程拾趣--集合子集问题
    读书笔记—CLR via C#异常和状态管理
    读书笔记—CLR via C#字符串及文本
    设计模式---抽象工厂
    读书笔记—CLR via C#反射
    读书笔记—CLR via C#委托和attribute
    C#编程实践—EventBroker简单实现
    Linux平台屏幕录像工具RecordMyDesktop
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/1567727.html
Copyright © 2011-2022 走看看