现在的位置: 首页 > 综合 > 正文

ObjectDataSource的删除用法

2013年08月20日 ⁄ 综合 ⁄ 共 1241字 ⁄ 字号 评论关闭

原标题: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的函数参数或函数参数的实体属性。

抱歉!评论已关闭.