我有一个GridView,它是通过ObjectDataSource填充的,并且在其DataKeyNames字段中有两个项目。其中一个是主键ID,另一个是类别字段(类别字段用于添加标题行以区分类别)。
显示正常,但我正在尝试创建删除操作。对象的删除方法仅需要ID字段,在ObjectDataSource中即使我将方法定义为仅需要ID字段,.net也会抱怨,因为它正在寻找具有DataKeyNames中定义的两个字段的方法。
如果我向删除方法添加类别参数,则可以工作,但是定义了一个未用于任何内容的参数很烦人。
我能否配置ObjectDataSource和GridView对象,使其具有两个DataKeyNames值,但指定应将哪些传递给哪些方法?
这两个对象的(简化)定义如下:
显示正常,但我正在尝试创建删除操作。对象的删除方法仅需要ID字段,在ObjectDataSource中即使我将方法定义为仅需要ID字段,.net也会抱怨,因为它正在寻找具有DataKeyNames中定义的两个字段的方法。
如果我向删除方法添加类别参数,则可以工作,但是定义了一个未用于任何内容的参数很烦人。
我能否配置ObjectDataSource和GridView对象,使其具有两个DataKeyNames值,但指定应将哪些传递给哪些方法?
这两个对象的(简化)定义如下:
<asp:ObjectDataSource ID="ObjDS1" runat="server" SelectMethod="getAllItems"
TypeName="Items" DeleteMethod="deleteItem">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32" />
<!-- This shouldn't be necessary: -->
<asp:Parameter Name="Category" Type="String" />
</DeleteParameters>
</asp:ObjectDataSource>
<asp:GridView ID="gvJItems" runat="server" AutoGenerateColumns="False" DataKeyNames="ID,Category"
DataSourceID="ObjDS1">
<Columns>
<asp:BoundField DataField="ID" Visible="false" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="85%"/>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lbDelete" Runat="server"
OnClientClick="return confirm('Are you sure you want to delete this?');"
CommandName="Delete">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>