This is a migrated thread and some comments may be shown as answers.

[Solved] Column Total is double

1 Answer 163 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Philip Senechal
Top achievements
Rank 1
Philip Senechal asked on 10 Apr 2008, 05:27 PM
I have a very basic implementation of a column total that is doubling the value. I have searched through the posts on here and most of them involve other routines that are causing the ItemDataBound to fire twice. I don't believe that's the problem with mine since it's a VERY simple design.

Can someone tell me what I might be doing wrong here? Here is the code behind:

Imports System 
Imports System.Data 
Imports System.Data.SqlClient 
Imports System.IO 
Imports Telerik.Web.UI 
 
Partial Class rpt_bistatus 
    Inherits System.Web.UI.Page 
 
    Private startFilter As String 
    Private endFilter As String 
    Private total As Double = 0 
 
    Protected Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
        If Not Page.IsPostBack Then 
            startFilter = Request.QueryString("start") 
            endFilter = Request.QueryString("end") 
        End If 
    End Sub 
 
    Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete 
        EmpID.Text = Master.loginID 
    End Sub 
 
    Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As GridNeedDataSourceEventArgs) Handles RadGrid1.NeedDataSource 
        Dim sql As String = "" 
        If startFilter <> "" And endFilter <> "" Then 
            RadGrid1.DataSource = GetDataTable("SELECT [requests].[request_id], [requests].[title], [requests].[savings], FORMAT([requests].[release_date], 'mm/dd/yyyy') AS [release_date], IIF([requests].[complete_date] IS NULL, [requests].[due_date], [requests].[complete_date]) AS [report_date], [requests].[status], [tEmployee].[EmpFNm] + ' ' + [tEmployee].[EmpLNm] AS [analyst_nm] FROM [requests] LEFT JOIN [tEmployee] ON [tEmployee].[EmpID] = [requests].[analyst_id] WHERE (([requests].[status] <> 'Cancelled' AND [requests].[status] <> 'Deferred') AND (IIF([requests].[complete_date] IS NULL, [requests].[due_date], [requests].[complete_date]) <= #" & endFilter & "# AND IIF([requests].[complete_date] IS NULL, [requests].[due_date], [requests].[complete_date]) >= #" & startFilter & "#) AND ([requests].[request_type]='BI Request'))") 
        Else 
            RadGrid1.DataSource = GetDataTable("SELECT [requests].[request_id], [requests].[title], [requests].[savings], FORMAT([requests].[release_date], 'mm/dd/yyyy') AS [release_date], IIF([requests].[complete_date] IS NULL, [requests].[due_date], [requests].[complete_date]) AS [report_date], [requests].[status], [tEmployee].[EmpFNm] + ' ' + [tEmployee].[EmpLNm] AS [analyst_nm] FROM [requests] LEFT JOIN [tEmployee] ON [tEmployee].[EmpID] = [requests].[analyst_id] WHERE (([requests].[status] <> 'Cancelled' AND [requests].[status] <> 'Deferred') AND (IIF([requests].[complete_date] IS NULL, [requests].[due_date], [requests].[complete_date]) = #12/31/9999#) AND ([requests].[request_type]='BI Request'))") 
        End If 
    End Sub 
 
    Public Function GetDataTable(ByVal query As String) As DataTable 
        Dim connstr As String = ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString 
        Dim dbconn As New OleDb.OleDbConnection(connstr) 
        Dim dbadapter As New System.Data.OleDb.OleDbDataAdapter(query, dbconn) 
        Dim oTable1 As New DataTable() 
        Try 
            dbadapter.Fill(oTable1) 
            dbadapter = Nothing 
        Finally 
            dbconn.Close() 
        End Try 
 
        Return oTable1 
    End Function 
 
    Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As GridItemEventArgs) Handles RadGrid1.ItemDataBound 
        If TypeOf e.Item Is GridDataItem Then 
            Dim dataItem As GridDataItem = CType(e.Item, GridDataItem) 
            If CType(dataItem.FindControl("lbl_savings"), Label).Text <> "" Then 
                total += Double.Parse(CType(dataItem.FindControl("lbl_savings"), Label).Text) 
            End If 
        End If 
 
        If TypeOf e.Item Is GridFooterItem Then 
            Dim footerItem As GridFooterItem = CType(e.Item, GridFooterItem) 
            footerItem("Savings").Text = total.ToString() 
            footerItem("Title").Text = "Total Annual Savings in Hours: " 
        End If 
    End Sub 
End Class 

And here is the grid call:

<telerik:RadGrid ID="RadGrid1" 
    EnableEmbeddedSkins="false" 
    Skin="EIS" 
    EnableAjax="false" 
    ImagesPath="images/grid/" 
    AllowSorting="true" 
    PageSize="25" 
    ShowFooter="true" 
    AllowPaging="false" 
    ShowGroupPanel="false" 
    GroupingEnabled="false" 
    OnNeedDataSource="RadGrid1_NeedDataSource" 
    OnItemDataBound="RadGrid1_ItemDataBound" 
    Width="950" 
    runat="server"
    <MasterTableView Name="master" CommandItemDisplay="None" DataKeyNames="request_id" Width="100%" HorizontalAlign="NotSet" AutoGenerateColumns="False" AllowSorting="true" NoMasterRecordsText="There are no Requests that match the criteria"
        <Columns> 
            <telerik:GridTemplateColumn HeaderText="Request #" DataField="request_id" UniqueName="request_id" SortExpression="request_id" Groupable="false"
                <ItemStyle Width="75" /> 
                <ItemTemplate> 
                    <href='request.aspx?id=<%# Eval("request_id") %>' style="cursor:pointer;"><asp:Label Width="65" CssClass="gridLabel" runat="server" ID="lbl_request_id" Text='<%# Eval("request_id") %>' /></a
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
            <telerik:GridTemplateColumn HeaderText="Purpose" UniqueName="title" SortExpression="title" Groupable="false"
                <ItemTemplate> 
                    <asp:Label CssClass="gridLabel" runat="server" ID="lbl_title" Text='<%# Eval("title") %>' /> 
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
            <telerik:GridTemplateColumn HeaderText="Savings" UniqueName="savings" DataField="savings" SortExpression="savings"
                <ItemStyle Width="65" /> 
                <ItemTemplate> 
                    <asp:Label Width="60" CssClass="gridLabel" runat="server" ID="lbl_savings" Text='<%# Eval("savings") %>' /> 
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
            <telerik:GridTemplateColumn HeaderText="Release Date" UniqueName="release_date" SortExpression="release_date" Groupable="false"
                <ItemStyle Width="90" /> 
                <ItemTemplate> 
                    <asp:Label Width="85" CssClass="gridLabel" runat="server" ID="lbl_release_date" Text='<%# Eval("release_date") %>' /> 
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
            <telerik:GridTemplateColumn HeaderText="Status" UniqueName="status" DataField="status" SortExpression="status" Groupable="false"
                <ItemStyle Width="65" /> 
                <ItemTemplate> 
                    <asp:Label Width="60" CssClass="gridLabel" runat="server" ID="lbl_status" Text='<%# Eval("status") %>' /> 
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
            <telerik:GridTemplateColumn HeaderText="Assigned To" UniqueName="analyst_nm" DataField="analyst_nm" SortExpression="analyst_nm" Groupable="false"
                <ItemStyle Width="105" /> 
                <ItemTemplate> 
                    <asp:Label Width="100" CssClass="gridLabel" runat="server" ID="lbl_analyst_nm" Text='<%# Eval("analyst_nm") %>' /> 
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
        </Columns> 
    </MasterTableView> 
    <ClientSettings AllowDragToGroup="True" AllowGroupExpandCollapse="True"
        <Selecting AllowRowSelect="True" /> 
        <Scrolling AllowScroll="false" UseStaticHeaders="True" /> 
        <ClientEvents OnGridCreated="GridCreated" /> 
    </ClientSettings> 
    <PagerStyle Mode="NextPrevAndNumeric" /> 
</telerik:RadGrid> 

I'm using the RadAjaxManager for the grid, but I tried deleting all the code for the RadAjaxManager and my total was still double.

Thanks.

1 Answer, 1 is accepted

Sort by
0
Vlad
Telerik team
answered on 11 Apr 2008, 06:08 AM
Hello Philip,

You have both Handles and aspx assignment for grid events:

OnItemDataBound="RadGrid1_ItemDataBound"
...
Handles RadGrid1.ItemDataBound

same for NeedDataSource.

Kind regards,
Vlad
the Telerik team

Instantly find answers to your questions at the new Telerik Support Center
Tags
Grid
Asked by
Philip Senechal
Top achievements
Rank 1
Answers by
Vlad
Telerik team
Share this question
or