Tôi có một GridView được điền từ một ObjectDataSource với hai mục trong trường DataKeyNames của nó. Một là khóa chính, ID, trường còn lại là trường danh mục (trường danh mục được sử dụng để thêm hàng tiêu đề để phân định các danh mục).Nhiều DataKeyNames trong GridView
Hiển thị hoạt động tốt, nhưng tôi đang cố tạo hành động Xóa. Phương thức xóa của đối tượng chỉ cần trường ID và trong ObjectDataSource ngay cả khi tôi định nghĩa phương thức như chỉ cần một trường ID, .net than phiền vì nó đang tìm kiếm một phương thức có cả hai trường được định nghĩa trong DataKeyNames.
Tính năng này hoạt động nếu tôi thêm thông số cho danh mục vào phương thức xóa, nhưng thật khó chịu khi có thông số được xác định không được sử dụng cho bất kỳ thứ gì.
Tôi có thể định cấu hình các đối tượng ObjectDataSource và GridView để có hai giá trị cho DataKeyNames nhưng cụ thể sẽ được chuyển cho phương thức nào?
The (giản thể) định nghĩa cho hai đối tượng là:
<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>