Solved

Page refresh duplicates inserts and footer totals not updating

Posted on 2008-10-07
4
264 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
  • 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
ISS migration from IIS 6 to IIS 8.5 rendering problems 4 51
Asp.net mvc entity issue 6 33
Allow space in this pattern 2 48
Need a starter for ETL protocol? 4 43
AJAX ModalPopupExtender has a required property "TargetControlID" which may seem to be very confusing to new users. It means the server control that will be extended by the ModalPopup, for instance, if when you click a button, a ModalPopup displays,…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

896 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now