【问题标题】:How to pass current ID when updating a gridview更新gridview时如何传递当前ID
【发布时间】:2016-06-21 20:07:25
【问题描述】:

我有一个使用存储过程以及选择和更新命令设置的网格视图。每当使用现有的服务器端变量更新行时,我想自动更新用户 ID 字段。我已经使用接口和我的 sql server 存储过程配置了选择和更新过程和命令。任何帮助将不胜感激。

【问题讨论】:

  • GridView 有一个名为 DataKeyNames 的属性。尝试使用它。
  • 我认为 DataKeyNames 仅用于主键。你可以在任何领域使用它吗?
  • 没错,DataKeyNames 是用于PK。并且您使用此值来更新确切的行(通过 PK)。
  • 我可以很好地更新各个行的字段。我遇到的问题是,当使用后端的 Request.ServerVariables("LOGON_USER") 变量更新该行中的字段时,我想自动更新“UpdatedBy”字段。如果我愿意,我可以很容易地手动更新它。
  • <asp:SessionParameter... 添加到UpdateParameters

标签: asp.net sql-server vb.net gridview


【解决方案1】:
  1. 将当前登录的用户写入一个 Session 变量中:

    protected void Page_Load(object sender, EventArgs e)
    {
        Session["UserID"] = Request.ServerVariables("LOGON_USER");
    }
    
  2. SqlDataSource UpdateParameters 更改为具有SessionParameter,它将在调用更新存储过程时从会话中填充UserID 参数。

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:conn %>" UpdateCommand="UpdateStoredProcedure" UpdateCommandType="StoredProcedure">
        <UpdateParameters>
            <asp:Parameter Name="ID" Type="Int32" />
            <asp:Parameter Name="FirstName" Type="String"  />
            <asp:Parameter Name="LastName" Type="String"  />
            <asp:SessionParameter Name="UserID" SessionField="UserID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
    

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多