Question Why is this slow (code)?


New member
Mar 23, 2021
Programming Experience
Private Sub acdContracts_ItemDataBound(sender As Object, e As AccordionItemEventArgs) Handles acdContracts.ItemDataBound
        Dim rptContractDetails
        Dim dtcontractlines
        Dim dvContractDetails As DataView
        Dim strFilter As String
        Dim iContractNumber As Integer
        Dim drvContract As DataRowView
        Dim lblSale, lblPurch, lblTotalDifference As Label
        Dim bolShowSo, bolshowPo As Boolean
        Dim csc As ContractStatusCodes

        If rblContractType.SelectedValue = "SO" Then
            bolShowSo = True
            bolshowPo = False
            bolShowSo = False
            bolshowPo = True
        End If

        If e.ItemType = AccordionItemType.Header Then
            lblPurch = e.AccordionItem.FindControl("lblPurchNum")
            lblSale = e.AccordionItem.FindControl("LblSaleNum")
            lblPurch.Visible = bolshowPo
            lblSale.Visible = bolShowSo
            lblTotalDifference = e.AccordionItem.FindControl("lblTotalDifference")

            DirectCast(e.AccordionItem.FindControl("lblHeaderPurchStatus"), Label).Visible = bolshowPo
            DirectCast(e.AccordionItem.FindControl("lblHeaderSaleStatus"), Label).Visible = bolShowSo

            If Convert.ToInt64(lblTotalDifference.Text.Replace(",", "")) < 0 Then
                lblTotalDifference.CssClass = "Validationerror"
            End If

            csc = DirectCast(e.AccordionItem.FindControl("lblHeaderPurchStatus"), Label).Text

            If csc = ContractStatusCodes.ClosedByUser Then
                DirectCast(e.AccordionItem.FindControl("lblHeaderPurchStatus"), Label).Text = "Closed"
                DirectCast(e.AccordionItem.FindControl("lblHeaderFunction"), Label).Text = "Reopen"
                DirectCast(e.AccordionItem.FindControl("lblHeaderPurchStatus"), Label).Text = csc.ToString
            End If

            csc = DirectCast(e.AccordionItem.FindControl("lblHeaderSaleStatus"), Label).Text

            If csc = ContractStatusCodes.ClosedByUser Then
                DirectCast(e.AccordionItem.FindControl("lblHeaderSaleStatus"), Label).Text = "Closed"
                DirectCast(e.AccordionItem.FindControl("lblHeaderSaleStatus"), Label).Text = csc.ToString
            End If

            If rblContractType.SelectedValue = "PO" Then
                DirectCast(e.AccordionItem.FindControl("lblName"), Label).Text = "Supplier"
                If DirectCast(Session(ContractHeaderSessionName), DataTable).Select("PurchNum = " & lblPurch.Text)(0).Item("SupplierName").ToString <> DBNull.Value.ToString Then
                    DirectCast(e.AccordionItem.FindControl("lblNameData"), Label).Text = DirectCast(Session(ContractHeaderSessionName), DataTable).Select("PurchNum = " & lblPurch.Text)(0).Item("SupplierName")
                End If
                DirectCast(e.AccordionItem.FindControl("lblName"), Label).Text = "Consumer"
                If DirectCast(Session(ContractHeaderSessionName), DataTable).Select("SaleNum = " & lblSale.Text)(0).Item("ConsumerName").ToString <> DBNull.Value.ToString Then
                    DirectCast(e.AccordionItem.FindControl("lblNameData"), Label).Text = DirectCast(Session(ContractHeaderSessionName), DataTable).Select("SaleNum = " & lblSale.Text)(0).Item("ConsumerName")
                End If
            End If
        ElseIf e.ItemType = AccordionItemType.Content Then
            dtcontractlines = Session(ContractLineSessionName)
            drvContract = e.Item
            rptContractDetails = e.AccordionItem.FindControl("rptContractDetails")

            If drvContract.Item("ContractType") = "PO" Then
                iContractNumber = drvContract.Item("PurchNum")
                strFilter = "PurchNum = " & iContractNumber
                iContractNumber = drvContract.Item("SaleNum")
                strFilter = "SaleNum = " & iContractNumber
            End If

            If Not rptContractDetails Is Nothing And iContractNumber > 0 And Not dtcontractlines Is Nothing Then
                dvContractDetails = dtcontractlines.DefaultView
                dvContractDetails.RowFilter = strFilter
                rptContractDetails.DataSource = dvContractDetails
            End If
        End If
    End Sub
Last edited by a moderator:


VB.NET Forum Moderator
Staff member
Aug 17, 2004
Sydney, Australia
Programming Experience
This is your second post that is nothing but unformatted code and a vague title. You need to do better. If you think that your code takes longer to execute than it should then use the tools that VS provides to analyse it. At the very least, you can provide us with far more relevant information. You can use the Stopwatch class to time sections of your code and work out exactly how long it takes to execute and where the time may be being spent. If you need to create a new test project and write code from scratch, building it up bit by bit until it starts to appear slow then that's what you should do. You need to make the effort to everything you can first and then come here with all the relevant information, provided to us in a clear explanation of the problem. Doing nothing for yourself, dumping all your code here and expecting us to do all the work doesn't really cut it. We're here to help, but that still requires you to do your part.
Top Bottom