重载/覆盖SQLDataSource更新事件

时间:2015-08-25 14:32:50

标签: asp.net asp.net-mvc gridview sqldatasource

我有一个SqlDataSource可以很好地从ASP.net端加载/选择用户和角色信息。我喜欢利用所形成的自动生成的编辑/更新链接按钮的能力(编辑事件看起来非常好,我很乐意能够使用它)。

但是,考虑到我learned yesterday关于我应该如何插入/删除AspNetUserRoles表,我想要将AspNetUsers的更新和插入/删除查询包装成一个事务。

如果我为GridView.RowUpdating事件分配了一个子代码,我就可以使代码生效,但是SqlDataSource之后的“主”更新命令似乎在事后发生了。

有没有办法覆盖自动生成的SqlDataSource事件?我看了this,但它并没有真正实现我想做的事情。

我认为因为我正在尝试更新两个表,并且对于一个表使用插入/删除命令,并且因为我需要操作从编辑行中获取值的变量(以从中查找RoleID RoleName),我真的需要覆盖它。

到目前为止,我只有found examples真正didn't need to override自动生成脚本的人,而不是某人做过的例子。在这种情况下,有没有办法改变初始设置?我想不会,但也许我错了。

以下是我正在使用的GridViewSqlDataSource。我认为我的实际sub是正常的,因为它正确触发,而不是更新命令(在这里拍摄很快就开玩笑)。

<asp:GridView ID="URdataGridView" runat="server" 
     AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     CellPadding="4" DataSourceID="MainUser" ForeColor="#333333" 
     GridLines="None" DataKeyNames="Id">
     <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
     <Columns>
         <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
         <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" ReadOnly="True" />
         <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
         <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
         <asp:BoundField DataField="PhoneNumber" HeaderText="PhoneNumber" SortExpression="PhoneNumber" />
         <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
         <asp:CheckBoxField DataField="LockoutEnabled" HeaderText="LockoutEnabled" SortExpression="LockoutEnabled" />
     </Columns>
     <EditRowStyle BackColor="#999999" />
     <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
     <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
     <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
     <SortedAscendingCellStyle BackColor="#E9E7E2" />
     <SortedAscendingHeaderStyle BackColor="#506C8C" />
     <SortedDescendingCellStyle BackColor="#FFFDF8" />
     <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>

<asp:SqlDataSource ID="MainUser" runat="server" 
     ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
     DeleteCommand="DeleteUserOnlyQuery" DeleteCommandType="StoredProcedure" 
     SelectCommand="SelectUsersRoles" SelectCommandType="StoredProcedure" 
     UpdateCommand="UpdateUserOnlyQuery" UpdateCommandType="StoredProcedure">
    <DeleteParameters>
        <asp:Parameter Name="original_Id" />
        <asp:Parameter Name="original_Email" />
        <asp:Parameter Name="original_UserName" />
        <asp:Parameter Name="original_PhoneNumber" />
        <asp:Parameter Name="original_LockoutEnabled" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="original_Id" />
        <asp:Parameter Name="Email" />
        <asp:Parameter Name="UserName" />
        <asp:Parameter Name="PhoneNumber" />
        <asp:Parameter Name="LockoutEnabled" />
    </UpdateParameters>
</asp:SqlDataSource>

0 个答案:

没有答案