參數: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会在后面用法八讲到