【问题标题】:datagrid update command does not work? Am I missing something?数据网格更新命令不起作用?我错过了什么吗?
【发布时间】:2011-06-28 20:12:56
【问题描述】:

我正在使用 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>

【问题讨论】:

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

标签: asp.net datagrid sqldatasource


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2020-09-14
    • 2018-04-30
    • 2022-01-13
    • 2022-01-05
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多