Tengo un GridView poblado de un ObjectDataSource con dos elementos en su campo DataKeyNames. Uno es la clave principal, ID, el otro es un campo de categoría (el campo de categoría se usa para agregar filas de encabezado para delinear categorías).Multiple DataKeyNames en un GridView
La visualización funciona bien, pero estoy intentando crear una acción Eliminar. El método de eliminación del objeto solo necesita el campo ID y en ObjectDataSource incluso si defino que el método solo necesita un campo de ID, .net se queja porque está buscando un método que tenga ambos campos definidos en DataKeyNames.
Funciona si agrego un parámetro para la categoría al método de eliminación, pero es molesto tener un parámetro definido que no se usa para nada.
¿Puedo configurar los objetos ObjectDataSource y GridView para tener dos valores para DataKeyNames pero específicos que deberían pasarse a qué métodos?
Los (simplificado) definiciones de los dos objetos son:
<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>