C# DataKeyName在ASP.NET GridView中作为不需要的更新参数出现

C# DataKeyName在ASP.NET GridView中作为不需要的更新参数出现,c#,asp.net,visual-studio-2008,gridview,parameters,C#,Asp.net,Visual Studio 2008,Gridview,Parameters,我在gridview标记(简化)中定义了以下内容: 然后,我将数据源的更新参数定义为: <UpdateParameters> <asp:Parameter Name="ID" Type="Int32" /> <asp:Parameter Name="IsJustified" Type="Boolean" />

我在gridview标记(简化)中定义了以下内容:


然后,我将数据源的更新参数定义为:

<UpdateParameters>                                
                <asp:Parameter Name="ID" Type="Int32" />
                <asp:Parameter Name="IsJustified" Type="Boolean" />
                <asp:Parameter Name="Comment" Type="String" />                
                <asp:Parameter Name="LastEditor" Type="String" />     
 </UpdateParameters>

但在尝试更新时,我得到一个错误,即

找不到非泛型方法 具有以下参数的“更新”:ID, isjustized,Comment,LastEditor, 入口日期, 雇员编号

我可以避免DataKey下的字段作为方法的参数出现吗

注意:我可以通过简单地修改我的方法的参数并添加来自Gridview的额外值来解决这个问题,但最好能有一种方法避免这些值被发送

提前感谢,

EtonB.

我认为没有解决办法。微软意识到了这个问题,并表示将在下一版本中解决。查看此处了解更多信息:。

数据键名称代表您正在更新的数据的主键,因此我认为您不能/应该避免在更新方法中使用它们。如果ID确实是主键,那么它应该列在数据键名称下。否则,更新方法应将EntryDate和EmployeeNumber作为参数,而不是ID。

您可以使用ObjectDataSource更新事件删除它们

 void ods_Updating(object sender, ObjectDataSourceMethodEventArgs e)
 {
    e.InputParameters.Remove("Type_ID");
    e.InputParameters.Remove("Document_ID");
    e.InputParameters.Remove("State_ID");
 }
我使用数据键进行查找,但在更新过程中不需要它们

 void ods_Updating(object sender, ObjectDataSourceMethodEventArgs e)
 {
    e.InputParameters.Remove("Type_ID");
    e.InputParameters.Remove("Document_ID");
    e.InputParameters.Remove("State_ID");
 }