.NET GridView 更新不会将 UserID 发送到 SQL 查询

标签 .net sql gridview sqldatasource

我目前正在尝试学习如何使用基本的 GridView 控件来显示我的数据。

首先,我尝试通过 aspx 页面完成所有操作,以使事情对自己来说更简单。

到目前为止,一切都运行良好,但我在使用更新查询时遇到问题。

我想要的结果只是一个简单的两列表格,其中将显示用户名,然后显示编辑按钮。

问题是,如果我不在列中包含用户 ID,则查询不会更新任何内容。

这是我的 SqlDataSource 代码:

<asp:SqlDataSource
    ID="sqlDataSource"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:conn %>"
    SelectCommand="SELECT UserID, Name FROM tblUsers;"
    UpdateCommand="UPDATE tblUsers SET Name = @Name WHERE UserID = @UserID">
    <UpdateParameters>
        <asp:Parameter Name="Name" />
        <asp:Parameter Name="UserID" />
    </UpdateParameters>
</asp:SqlDataSource>

这是我的 GridView:

<asp:GridView
    ID="Clients"
    DataSourceID="sqlDataSource"
    runat="server"
    AllowPaging="true"
    AllowSorting="true"
    PageSize="25"
    AutoGenerateColumns="False"
    DataKeyNames="UserID">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Users Name" SortExpression="Name" />
        <asp:CommandField EditText="Edit" ShowEditButton="true" />
    </Columns>
</asp:GridView>

当我进入该页面并单击“编辑”时,“名称”字段将更改为文本框,我可以按预期选择更新或取消。

但是使用上面的代码,当我单击“更新”时,它只会再次显示普通表,而不会更改数据,因为 SQL 只是没有获取任何 UserID。

但是如果我添加 <asp:BoundField DataField="UserID" HeaderText="Users ID" SortExpression="UserID" /><Columns> ,它有效。

有什么方法可以让我在不必将 UserID 列添加到表中的情况下完成这项工作吗?

最佳答案

您可以使用 OldValuesParameterFormatString:

<asp:SqlDataSource
    ID="sqlDataSource"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:conn %>"
    OldValuesParameterFormatString="original_{0}"
    SelectCommand="SELECT UserID, Name FROM tblUsers;"
    UpdateCommand="UPDATE tblUsers SET Name = @Name WHERE UserID = @original_UserID">
    <UpdateParameters>
        <asp:Parameter Name="Name" />
        <asp:Parameter Name="original_UserID" />
    </UpdateParameters>
</asp:SqlDataSource>

关于.NET GridView 更新不会将 UserID 发送到 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226974/

相关文章:

javascript - Electron 应用程序中是否有可用的 GridView 模块/组件?

c# - Epplus 获取正确的单元格背景 rgb 颜色

c# - 使用 NAudio 从左声道的一个 WAV 和右声道的一个 WAV 创建 WAV

sql - 如何以最有效的方式获取刚刚插入SQLITE DB的主键(例如ID)?

MySQL GROUP BY - 每组显示 X 个结果

asp.net - 更新 ASP.NET Gridview 中 'nvarchar' 附近的语法不正确

c# - 在没有 RDBMS 的情况下,在 .Net 中对 DataTables 或类似物运行 SQL 查询

c# - 使用 RSACryptoServiceProvider (C#.NET) 解密时出现 "Bad Key."异常

PHP PDO ODBC - 数据类型在等于运算符中不兼容

c# - GridView.Databind() 不适用于对象列表