DataKeyNames在ASP.NET GridView中作为不需要的Update参数出现

时间:2010-10-18 16:51:37

标签: c# asp.net visual-studio-2008 gridview parameters

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

<asp:GridView ID="grvReport" runat="server" DataSourceID="odsReport" 
                AutoGenerateColumns="False" DataKeyNames="EntryDate,EmployeeNumber">

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

<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,   IsJustified,评论,LastEditor,   EntryDate,   EmployeeNumber。

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

注意:我可以通过简单地修改我的方法的参数并添加来自Gridview的额外值并且不对它们做任何事情来解决这个问题,但是如果有一种方法可以避免这些值甚至被发送,那将是很好的。

提前致谢,
EtonB。

3 个答案:

答案 0 :(得分:3)

您可以使用ObjectDataSource更新事件

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

我使用DataKeys进行查找,但在更新过程中我不需要它们。

答案 1 :(得分:1)

我认为没有解决方法。微软认识到这个问题,并表示将在下一个版本中解决。点击此处了解详情:https://connect.microsoft.com/VisualStudio/feedback/details/260674/generated-default-update-method-in-datatableadapter-in-a-typed-dataset-shouuld-not-update-primary-key

答案 2 :(得分:0)

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