Solved

Page refresh duplicates inserts and footer totals not updating

Posted on 2008-10-07
4
267 Views
Last Modified: 2012-06-21
Please reference this:
http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_23787751.html

Working like a charm. BUT! If i add a new employee, it adds it ok. If i refresh the page, it adds it again. Also the totals don't refresh unless i leave the page and re-enter. Just refreshing the page don't do the trick.

Imports Security_Check
Imports System.Data
 
 
Partial Class IT_DigitalCertificate
    Inherits System.Web.UI.Page
    Dim SM(10) As Integer
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim sss As String
        Dim pf As Boolean
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        'this gets current windows user
        sss = User.Identity.Name.ToString
        sss = Mid(sss, InStr(sss, "\") + 1).ToLower
        pf = PASS("DigitalCertificateEDITS", sss)
        'the PASS function determinds whether this user needs to edit the data and
        'whether the user needs to enter data. 
        'this test will either make the edit/delete visible false and the detailsview
        'visible or not! 
        If pf = False Then
            GridView1.Columns(0).Visible = False
            DetailsView1.Visible = False
        End If
 
        Dim arg As DataSourceSelectArguments
        arg = New DataSourceSelectArguments
        Dim view As System.Data.DataView = CType(SqlDataSource1.Select(arg), DataView)
 
        view.RowFilter = "QSE='True'"
        SM(1) = view.ToTable().Rows.Count
        view.RowFilter = "TDSP='True'"
        SM(2) = view.ToTable().Rows.Count
        view.RowFilter = "LSE='True'"
        SM(3) = view.ToTable().Rows.Count
        view.RowFilter = "RES='True'"
        SM(4) = view.ToTable().Rows.Count
        view.RowFilter = "TMPA='True'"
        SM(5) = view.ToTable().Rows.Count
        For k = 1 To 5
            GridView1.FooterRow.Cells(k + 3).Text = SM(k).ToString
        Next
        GridView1.FooterRow.Cells(0).Text = "Totals"
    End Sub
End Class
'=========================================
'=========================================
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="DigitalCertificate.aspx.vb" Inherits="IT_DigitalCertificate" title="Digital Certificates Administration" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:IntranetConnectionString %>" 
        DeleteCommand="DELETE FROM [DigitalCertificates] WHERE [id] = @id" 
        InsertCommand="INSERT INTO [DigitalCertificates] ([LastName], [FirstName], [QSE], [TDSP], [LSE], [RES], [TMPA], [EmployeeID], [ExpirationDate]) VALUES (@LastName, @FirstName, @QSE, @TDSP, @LSE, @RES, @TMPA, @EmployeeID, @ExpirationDate)" 
        SelectCommand="SELECT * FROM [DigitalCertificates] ORDER BY [LastName]" 
        UpdateCommand="UPDATE [DigitalCertificates] SET [LastName] = @LastName, [FirstName] = @FirstName, [QSE] = @QSE, [TDSP] = @TDSP, [LSE] = @LSE, [RES] = @RES, [TMPA] = @TMPA, [EmployeeID] = @EmployeeID, [ExpirationDate] = @ExpirationDate WHERE [id] = @id">
        <DeleteParameters>
            <asp:Parameter Name="id" Type="Byte" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="LastName" Type="String" />
            <asp:Parameter Name="FirstName" Type="String" />
            <asp:Parameter Name="QSE" Type="Boolean" />
            <asp:Parameter Name="TDSP" Type="Boolean" />
            <asp:Parameter Name="LSE" Type="Boolean" />
            <asp:Parameter Name="RES" Type="Boolean" />
            <asp:Parameter Name="TMPA" Type="Boolean" />
            <asp:Parameter Name="EmployeeID" Type="String" />
            <asp:Parameter Name="ExpirationDate" Type="DateTime" />
        </InsertParameters>
    </asp:SqlDataSource>
 
        <ContentTemplate>
            <asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="False" BackColor="White" BorderColor="#DEDFDE" 
    BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="id" 
    DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Vertical" 
    ShowFooter="True">
                <FooterStyle BackColor="#CCCC99" />
                <RowStyle BackColor="#F7F7DE" />
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" 
                ShowEditButton="True" />
                    <asp:BoundField DataField="id" HeaderText="id" 
                ReadOnly="True" SortExpression="id" />
                    <asp:BoundField DataField="LastName" 
                HeaderText="LastName" SortExpression="LastName" />
                    <asp:BoundField DataField="FirstName" 
                HeaderText="FirstName" SortExpression="FirstName" />
                    <asp:CheckBoxField DataField="QSE" HeaderText="QSE" 
                SortExpression="QSE" />
                    <asp:CheckBoxField DataField="TDSP" HeaderText="TDSP" 
                SortExpression="TDSP" />
                    <asp:CheckBoxField DataField="LSE" HeaderText="LSE" 
                SortExpression="LSE" />
                    <asp:CheckBoxField DataField="RES" HeaderText="RES" 
                SortExpression="RES" />
                    <asp:CheckBoxField DataField="TMPA" HeaderText="TMPA" 
                SortExpression="TMPA" />
                    <asp:BoundField DataField="EmployeeID" 
                HeaderText="EmployeeID" SortExpression="EmployeeID" />
                    <asp:BoundField DataField="ExpirationDate" 
                HeaderText="ExpirationDate" SortExpression="ExpirationDate" />
                </Columns>
                <PagerStyle BackColor="#F7F7DE" ForeColor="Black" 
            HorizontalAlign="Right" />
                <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" 
            ForeColor="White" />
                <HeaderStyle BackColor="#6B696B" Font-Bold="True" 
            ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
            </asp:GridView>
        <br />
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
        BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
        CellPadding="3" DataKeyNames="id" DataSourceID="SqlDataSource1" 
        DefaultMode="Insert" GridLines="Horizontal" Height="50px" Width="125px">
        <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
        <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
        <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
        <Fields>
            <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" 
                SortExpression="id" Visible="False" />
            <asp:BoundField DataField="LastName" HeaderText="LastName" 
                SortExpression="LastName" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
                SortExpression="FirstName" />
            <asp:CheckBoxField DataField="QSE" HeaderText="QSE" SortExpression="QSE" />
            <asp:CheckBoxField DataField="TDSP" HeaderText="TDSP" SortExpression="TDSP" />
            <asp:CheckBoxField DataField="LSE" HeaderText="LSE" SortExpression="LSE" />
            <asp:CheckBoxField DataField="RES" HeaderText="RES" SortExpression="RES" />
            <asp:CheckBoxField DataField="TMPA" HeaderText="TMPA" SortExpression="TMPA" />
            <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" 
                SortExpression="EmployeeID" />
            <asp:BoundField DataField="ExpirationDate" HeaderText="ExpirationDate" 
                SortExpression="ExpirationDate" />
            <asp:CommandField ShowInsertButton="True" />
        </Fields>
        <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
        <EditRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
        <AlternatingRowStyle BackColor="#F7F7F7" />
    </asp:DetailsView>
        </ContentTemplate>
 
</asp:Content>

Open in new window

0
Comment
Question by:wrwiii12
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 15

Accepted Solution

by:
NazoUK earned 500 total points
ID: 22660792
Add an OnItemInserted event for your details event and in that repeat the logic to calculate your totals.

The duplicate insert happens because refreshing the page also submits the form data, so when you hit F5 as far as ASP.Net is concerned it's the same as pressing the insert button. There isn't really any way as far as I know of stopping this behaviour.
0
 
LVL 15

Expert Comment

by:NazoUK
ID: 22660798
Sorry that should have said Add an OnItemInserted event for your DetailsView
0
 
LVL 4

Author Comment

by:wrwiii12
ID: 22661456
Still not working? I tried the OnItemInserted even on the DetailsView but the totals are removed.
Imports Security_Check
Imports System.Data
 
 
Partial Class IT_DigitalCertificate
    Inherits System.Web.UI.Page
    Dim SM(10) As Integer
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim sss As String
        Dim pf As Boolean
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
 
        sss = User.Identity.Name.ToString
        sss = Mid(sss, InStr(sss, "\") + 1).ToLower
        pf = PASS("DigitalCertificateEDITS", sss)
 
        If pf = False Then
            GridView1.Columns(0).Visible = False
            DetailsView1.Visible = False
        End If
        If Not Page.IsPostBack Then
            UPDATE_COUNT()
        End If
    End Sub
 
    Public Sub UPDATE_COUNT()
        Dim arg As DataSourceSelectArguments
        arg = New DataSourceSelectArguments
        Dim view As System.Data.DataView = CType(SqlDataSource1.Select(arg), DataView)
 
        view.RowFilter = "QSE='True'"
        SM(1) = view.ToTable().Rows.Count
        view.RowFilter = "TDSP='True'"
        SM(2) = view.ToTable().Rows.Count
        view.RowFilter = "LSE='True'"
        SM(3) = view.ToTable().Rows.Count
        view.RowFilter = "RES='True'"
        SM(4) = view.ToTable().Rows.Count
        view.RowFilter = "TMPA='True'"
        SM(5) = view.ToTable().Rows.Count
 
        For k = 1 To 5
            GridView1.FooterRow.Cells(k + 3).Text = SM(k).ToString
        Next
        GridView1.FooterRow.Cells(0).Text = "Totals"
    End Sub
End Class
'==============================================
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="DigitalCertificate.aspx.vb" Inherits="IT_DigitalCertificate" title="Digital Certificates Administration" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:IntranetConnectionString %>" 
        DeleteCommand="DELETE FROM [DigitalCertificates] WHERE [id] = @id" 
        InsertCommand="INSERT INTO [DigitalCertificates] ([LastName], [FirstName], [QSE], [TDSP], [LSE], [RES], [TMPA], [EmployeeID], [ExpirationDate]) VALUES (@LastName, @FirstName, @QSE, @TDSP, @LSE, @RES, @TMPA, @EmployeeID, @ExpirationDate)" 
        SelectCommand="SELECT * FROM [DigitalCertificates] ORDER BY [LastName]" 
        UpdateCommand="UPDATE [DigitalCertificates] SET [LastName] = @LastName, [FirstName] = @FirstName, [QSE] = @QSE, [TDSP] = @TDSP, [LSE] = @LSE, [RES] = @RES, [TMPA] = @TMPA, [EmployeeID] = @EmployeeID, [ExpirationDate] = @ExpirationDate WHERE [id] = @id">
        <DeleteParameters>
            <asp:Parameter Name="id" Type="Byte" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="LastName" Type="String" />
            <asp:Parameter Name="FirstName" Type="String" />
            <asp:Parameter Name="QSE" Type="Boolean" />
            <asp:Parameter Name="TDSP" Type="Boolean" />
            <asp:Parameter Name="LSE" Type="Boolean" />
            <asp:Parameter Name="RES" Type="Boolean" />
            <asp:Parameter Name="TMPA" Type="Boolean" />
            <asp:Parameter Name="EmployeeID" Type="String" />
            <asp:Parameter Name="ExpirationDate" Type="DateTime" />
        </InsertParameters>
    </asp:SqlDataSource>
 
        <ContentTemplate>
            <asp:Table ID="Table1" runat="server" Width="675px">
            <asp:TableHeaderRow >
            <asp:TableCell><asp:Label ID="Label1" runat="server" Text="DIGITAL CERTIFICATES" Font-Size="XX-Large" ForeColor="Yellow"></asp:Label></asp:TableCell>
            </asp:TableHeaderRow>
    </asp:Table>
            <asp:GridView ID="GridView1" runat="server"
    AutoGenerateColumns="False" BackColor="White" BorderColor="#DEDFDE" 
    BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="id" 
    DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Vertical" 
    ShowFooter="True" Font-Size="Small" Font-Bold="True">
                <FooterStyle BackColor="#CCCC99" />
                <RowStyle BackColor="#F7F7DE" />
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" 
                ShowEditButton="True" />
                    <asp:BoundField DataField="id" HeaderText="id" 
                ReadOnly="True" SortExpression="id" />
                    <asp:BoundField DataField="LastName" 
                HeaderText="LastName" SortExpression="LastName" />
                    <asp:BoundField DataField="FirstName" 
                HeaderText="FirstName" SortExpression="FirstName" />
                    <asp:CheckBoxField DataField="QSE" HeaderText="QSE" 
                SortExpression="QSE" />
                    <asp:CheckBoxField DataField="TDSP" HeaderText="TDSP" 
                SortExpression="TDSP" />
                    <asp:CheckBoxField DataField="LSE" HeaderText="LSE" 
                SortExpression="LSE" />
                    <asp:CheckBoxField DataField="RES" HeaderText="RES" 
                SortExpression="RES" />
                    <asp:CheckBoxField DataField="TMPA" HeaderText="TMPA" 
                SortExpression="TMPA" />
                    <asp:BoundField DataField="EmployeeID" 
                HeaderText="EmployeeID" SortExpression="EmployeeID" />
                    <asp:BoundField DataField="ExpirationDate" 
                HeaderText="ExpirationDate" SortExpression="ExpirationDate" />
                </Columns>
                <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
                <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
            </asp:GridView>
        <br />
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" OnItemInserted="UPDATE_COUNT"  
        BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
        CellPadding="3" DataKeyNames="id" DataSourceID="SqlDataSource1" 
        DefaultMode="Insert" GridLines="Horizontal" Height="50px" Width="125px" 
        Font-Size="X-Small">
        <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
        <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
        <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
        <Fields>
            <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" 
                SortExpression="id" Visible="False" />
            <asp:BoundField DataField="LastName" HeaderText="LastName" 
                SortExpression="LastName" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
                SortExpression="FirstName" />
            <asp:CheckBoxField DataField="QSE" HeaderText="QSE" SortExpression="QSE" />
            <asp:CheckBoxField DataField="TDSP" HeaderText="TDSP" SortExpression="TDSP" />
            <asp:CheckBoxField DataField="LSE" HeaderText="LSE" SortExpression="LSE" />
            <asp:CheckBoxField DataField="RES" HeaderText="RES" SortExpression="RES" />
            <asp:CheckBoxField DataField="TMPA" HeaderText="TMPA" SortExpression="TMPA" />
            <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" 
                SortExpression="EmployeeID" />
            <asp:BoundField DataField="ExpirationDate" HeaderText="ExpirationDate" 
                SortExpression="ExpirationDate" />
            <asp:CommandField ShowInsertButton="True" />
        </Fields>
        <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
        <EditRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
        <AlternatingRowStyle BackColor="#F7F7F7" />
    </asp:DetailsView>
        </ContentTemplate>
</asp:Content>

Open in new window

0
 
LVL 4

Author Closing Comment

by:wrwiii12
ID: 31504905
I added another question to followup on this one.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Modal Popup Extender control 1 53
Setting up a IIS 8 Web Server to send and receive XML files 7 102
Testing of the web services 1 51
asp.net mvc 2 35
Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question