我有一個從ObjectDataSource填充的GridView,其DataKeyNames字段中有兩個項目。一個是主鍵ID,另一個是類別字段(類別字段用於添加標題行來描述類別)。GridView中的多個DataKeyNames
顯示工作正常,但我試圖創建一個刪除操作。即使我將該方法定義爲只需要一個ID字段,對象的delete方法也只需要ID字段,並且在ObjectDataSource中,.net會抱怨,因爲它正在尋找一種方法,該方法同時具有在DataKeyNames中定義的兩個字段。
它的工作原理是,如果我爲該類別添加一個參數到delete方法,但惱人的是有一個參數沒有用於任何東西。
我可以將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>