我需要使用ASP.NET 4.5将当前登录的用户ID插入到Oracle数据库表中。我正在使用Windows身份验证与本地AD服务器。
当管理员用户点击“覆盖”按钮时,他们的ID需要插入到另一个表中(以及其他两个值),以便我们知道是谁执行覆盖的人。那么这是否意味着我需要在Override按钮上使用某种OnClick()
方法运行SqlDataSource的Insert命令?或者我是否必须完全以编程方式执行此操作(而不是使用SqlDataSource插入命令)?
这是我到目前为止的GridView:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
CellPadding="6" DataSourceID="SqlDataSource" ForeColor="#333333" GridLines="None" PageSize="20"
DataKeyNames="PP_TRANS_REF_NUM" >
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField ShowHeader="false" >
<ItemTemplate>
<asp:Button ID="btnOverride" runat="server" Text="Override" CssClass="pure-button pure-button-active" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PP_TIMESTAMP" HeaderText="Timestamp" SortExpression="PP_TIMESTAMP" ReadOnly="True" />
<asp:BoundField DataField="PP_CARD_CODE" HeaderText="Card Code" SortExpression="PP_CARD_CODE" ReadOnly="True" />
... (Extra Gridview columns, shortened for brevity.
</asp:GridView>
这是我的SqlDataSource:
<asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:CxString %>" ProviderName="<%$ ConnectionStrings:CxStringProviderName %>"
SelectCommand="SELECT * FROM Z_PCARD_PRELOAD"
InsertCommand="INSERT INTO Z_PCARD_OVERRIDE (PO_TIMESTAMP, PO_TRANS_REF_NUM, PO_AUTH_USERID) VALUES (:PP_TIMESTAMP, :PP_TRANS_REF_NUM, )"
FilterExpression="PP_MSG_CODE LIKE '%Z%'" >
<InsertParameters>
<asp:ControlParameter ControlID="GridView1" Name="PP_TIMESTAMP" PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="PP_TRANS_REF_NUM" PropertyName="SelectedValue" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
答案 0 :(得分:1)
到目前为止你所拥有的东西应该对你有用。我认为您需要做的就是将CommandName="Insert"
添加到Button控件中:
<asp:Button ID="btnOverride" runat="server" Text="Override"
CssClass="pure-button pure-button-active" CommandName="Insert" />
这样,附加的SqlDataSource控件知道执行你为它设置的“InsertCommand”。