Asp.net datagrid更新命令不起作用?我错过什么了吗?

Asp.net datagrid更新命令不起作用?我错过什么了吗?,asp.net,datagrid,sqldatasource,Asp.net,Datagrid,Sqldatasource,我正在使用Datagrid和SQLDataSource绑定一个表中的数据。为了启用更新,我编写了更新查询,我的错误如下 update mytable field1=@field1, field2=@field2 where ID=@ID 单击“编辑”时,我进入编辑模式。当我提交更改时,该更改不会提交,并且不会出现错误。我需要在别的地方换东西吗?在本例中,我没有修改任何C#代码 编辑: 如果我省略了where ID=@ID,那么整个列都被成功地更改了,但是ID=@ID不起作用。这里有什么问题 编

我正在使用Datagrid和SQLDataSource绑定一个表中的数据。为了启用更新,我编写了更新查询,我的错误如下

update mytable field1=@field1, field2=@field2 where ID=@ID
单击“编辑”时,我进入编辑模式。当我提交更改时,该更改不会提交,并且不会出现错误。我需要在别的地方换东西吗?在本例中,我没有修改任何C#代码

编辑: 如果我省略了where ID=@ID,那么整个列都被成功地更改了,但是ID=@ID不起作用。这里有什么问题

编辑:代码

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
        SelectCommand="SELECT [my_id], [ID], [FirstName], [LastName], [ApplicationUserName] FROM [member_tbl]" 

        UpdateCommand="UPDATE [member_tbl] SET [my_id] = @my_id, [FirstName] = @FirstName, [LastName] = @LastName, [ApplicationUserName] = @ApplicationUserName where ID = @ID">
        <UpdateParameters>
            <asp:Parameter Name="my_id" Type="Int32"/>
            <asp:Parameter Name="FirstName" />
            <asp:Parameter Name="LastName" />
            <asp:Parameter Name="ApplicationUserName" />
            <asp:Parameter Name="id" />
        </UpdateParameters>
    </asp:SqlDataSource>


回答我自己:我发现为了让它工作,ID列必须是主键(或者可能是唯一的列),否则它不会工作,也不会给你任何错误,这有点奇怪。

@Bala,我实际上为这篇文章重命名了一些字段。问题在于ID=@ID,我不知道什么是正确的sytanx;不知道为什么它不起作用。您是否尝试为所有参数包含类型?这段代码是由SQLDataSource自动生成的,所以我觉得没有必要更改它。当我删除where ID=@ID时,它确实起作用,但随后它会更新所有行。