Skip to content

Replies

0
Saravanan
Saravanan answered on Feb 18, 2009 3:33 PM

Hi Rumen

I moved the code that dynamically sets up the templated column to OnInit. I am still having the same problem. Following is the code I have written.

Imports System.Data
Imports Infragistics.WebUI.UltraWebGrid
Imports Infragistics.WebUI.UltraWebNavigator

Partial Class View_Edit_Surcharge
    Inherits System.Web.UI.Page
    Protected Overrides Sub OnInit(ByVal e As EventArgs)
        MyBase.OnInit(e)

        If (Not IsPostBack()) Then
            AddGridColumns()
        End If
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If (Not IsPostBack()) Then
            LoadData()
        End If
    End Sub

    Protected Sub LoadData()
        PopulateCustomerGridView()
    End Sub

    Protected Sub AddGridColumns()
        ' Create a templated column

        Dim col As New TemplatedColumn(True)

        Me.UltraWebGrid1.DisplayLayout.Bands(0).Columns.Add(col)
        col.Key = "Select"
        col.Header.Caption = ""
        Dim tempHeader As New GridHeaderTemplate()
        ' Set the header template.
        col.HeaderTemplate = tempHeader

    End Sub

    Private Sub PopulateFilteredCustomerGridView(ByVal custName As String, ByVal type As String, ByVal grade As String)
        Dim surchargeCustDs As DataSet = CType(Session.Item("surchargeCustDs"), DataSet)
        Dim filteredDT As DataTable = CType(Session.Item("filteredDT"), DataTable)

        Dim whereClause As String = ""
        Dim custNameClause As String = "1=1"
        Dim typeClause As String = "1=1"
        Dim gradeClause As String = "1=1"

        Try
            If (custName <> "") Then
                custNameClause = "CUSTOMER_NAME='" + custName + "'"
            End If
            If (type <> "") Then
                typeClause = "charge_code='" + type + "'"
            End If
            If (grade <> "") Then
                gradeClause = "AISIXXCODE='" + grade + "'"
            End If

            whereClause = custNameClause + " And " + typeClause + " And " + gradeClause

            filteredDT = surchargeCustDs.Tables(0).Clone

 

            For Each tmpRow As DataRow In surchargeCustDs.Tables(0).Select(whereClause)
                filteredDT.ImportRow(tmpRow)
            Next
            Session.Item("isBinding") = True
            UltraWebGrid1.DataSource = filteredDT
            UltraWebGrid1.DataBind()
            Session.Item("isBinding") = False
            Session.Item("filteredDT") = filteredDT
        Catch ex As Exception
        End Try
    End Sub

    Private Sub PopulateCustomerGridView()
        Dim surchargeCustDs As DataSet = CType(Session.Item("surchargeCustDs"), DataSet)
        Dim filteredDT As DataTable = CType(Session.Item("filteredDT"), DataTable)
        Dim isRefreshed As Boolean = CType(Session.Item("isRefreshed"), Boolean)

        Try
            If (surchargeCustDs Is Nothing Or isRefreshed) Then
                surchargeCustDs = DataAccess.GetCustomerSurchargeDetails()
                Session.Item("surchargeCustDs") = surchargeCustDs
                Session.Item("isRefreshed") = False
            End If

            filteredDT = surchargeCustDs.Tables(0).Clone

 

            For Each tmpRow As DataRow In surchargeCustDs.Tables(0).Rows
                filteredDT.ImportRow(tmpRow)
            Next
            Session.Item("isBinding") = True
            UltraWebGrid1.DataSource = filteredDT
            UltraWebGrid1.DataBind()
            Session.Item("isBinding") = False
            Session.Item("filteredDT") = filteredDT

        Catch ex As Exception
        End Try
    End Sub

 

    Protected Sub UltraWebTree1_NodeSelectionChanged(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebNavigator.WebTreeNodeEventArgs) Handles UltraWebTree1.NodeSelectionChanged

        Dim uTNode As Node
        Dim uTSelLevel As Integer

        Try
            'hasToBeFocused = False
            uTNode = e.Node
            uTNode.Expand(False)
            uTSelLevel = uTNode.Level

            Select Case uTSelLevel
                Case 0
                    PopulateCustomerGridView()
                Case 1
                    PopulateFilteredCustomerGridView(uTNode.Text, "", "")
                Case 2
                    PopulateFilteredCustomerGridView(uTNode.Parent.Text, uTNode.Text, "")
                Case 3
                    PopulateFilteredCustomerGridView(uTNode.Parent.Parent.Text, uTNode.Parent.Text, uTNode.Text)
            End Select
        Catch ex As Exception
        End Try

    End Sub

 

    Protected Sub UltraWebGrid1_InitializeLayout(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebGrid.LayoutEventArgs) Handles UltraWebGrid1.InitializeLayout

        Dim col As TemplatedColumn = DirectCast((e.Layout.Bands(0).Columns.FromKey("Select")), TemplatedColumn)

        Dim tempCell As New PlaceHolderTemplate()
        ' Set the cell template.
        col.CellTemplate = tempCell

        ' make the checkbox the last column of band 0.
        col.Move(e.Layout.Bands(0).Columns.Count – 1)

        Me.ClientScript.RegisterClientScriptBlock(Me.[GetType](), "CheckBoxKey", "<script type='text/javascript'>var headerCheckBoxID = '" + col.HeaderItem.FindControl("headerCB").ClientID + "';</script>")
        Me.ClientScript.RegisterClientScriptBlock(Me.[GetType](), "GridKey", "var gridID = '" + Me.UltraWebGrid1.ClientID + "';", True)

 

        e.Layout.Bands(0).Columns.FromKey("CHARGE_TYPE").Hidden = True
        e.Layout.Bands(0).Columns.FromKey("CUST_ID").Hidden = True
        e.Layout.Bands(0).Columns.FromKey("SURCHARGE_ID").Hidden = True
        e.Layout.Bands(0).Columns.FromKey("FUT_SURCHARGE_ID").Hidden = True

        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NUMBER").Header.Caption = "ACCOUNT"
        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NUMBER").Move(0)
        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NUMBER").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NUMBER").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NAME").Header.Caption = "NAME"
        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NAME").Move(1)
        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NAME").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("CUSTOMER_NAME").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("CHARGE_CODE").Header.Caption = "Charge"
        e.Layout.Bands(0).Columns.FromKey("CHARGE_CODE").Move(2)
        e.Layout.Bands(0).Columns.FromKey("CHARGE_CODE").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("CHARGE_CODE").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("AISIXXCODE").Header.Caption = "AISIXX"
        e.Layout.Bands(0).Columns.FromKey("AISIXXCODE").Move(3)
        e.Layout.Bands(0).Columns.FromKey("AISIXXCODE").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("AISIXXCODE").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("AMT").Header.Caption = "AMT"
        e.Layout.Bands(0).Columns.FromKey("AMT").Move(4)
        e.Layout.Bands(0).Columns.FromKey("AMT").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("AMT").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("AMT").CellStyle.BackColor = Drawing.Color.FromArgb(204, 255, 204)
        e.Layout.Bands(0).Columns.FromKey("UOM").Header.Caption = "UOM"
        e.Layout.Bands(0).Columns.FromKey("UOM").Move(5)
        e.Layout.Bands(0).Columns.FromKey("UOM").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("UOM").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("UOM").CellStyle.BackColor = Drawing.Color.FromArgb(204, 255, 204)
        e.Layout.Bands(0).Columns.FromKey("START_DATE").Header.Caption = "Start"
        e.Layout.Bands(0).Columns.FromKey("START_DATE").Move(6)
        e.Layout.Bands(0).Columns.FromKey("START_DATE").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("START_DATE").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("START_DATE").CellStyle.BackColor = Drawing.Color.FromArgb(204, 255, 204)
        e.Layout.Bands(0).Columns.FromKey("END_DATE").Header.Caption = "End"
        e.Layout.Bands(0).Columns.FromKey("END_DATE").Move(7)
        e.Layout.Bands(0).Columns.FromKey("END_DATE").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("END_DATE").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("END_DATE").CellStyle.BackColor = Drawing.Color.FromArgb(204, 255, 204)
        e.Layout.Bands(0).Columns.FromKey("FUT_AMT").Header.Caption = "AMT"
        e.Layout.Bands(0).Columns.FromKey("FUT_AMT").Move(8)
        e.Layout.Bands(0).Columns.FromKey("FUT_AMT").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("FUT_AMT").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("FUT_AMT").CellStyle.BackColor = Drawing.Color.FromArgb(255, 255, 153)
        e.Layout.Bands(0).Columns.FromKey("FUT_UOM").Header.Caption = "UOM"
        e.Layout.Bands(0).Columns.FromKey("FUT_UOM").Move(9)
        e.Layout.Bands(0).Columns.FromKey("FUT_UOM").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("FUT_UOM").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("FUT_UOM").CellStyle.BackColor = Drawing.Color.FromArgb(255, 255, 153)
        e.Layout.Bands(0).Columns.FromKey("FUT_START_DATE").Header.Caption = "Start"
        e.Layout.Bands(0).Columns.FromKey("FUT_START_DATE").Move(10)
        e.Layout.Bands(0).Columns.FromKey("FUT_START_DATE").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("FUT_START_DATE").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("FUT_START_DATE").CellStyle.BackColor = Drawing.Color.FromArgb(255, 255, 153)
        e.Layout.Bands(0).Columns.FromKey("FUT_END_DATE").Header.Caption = "End"
        e.Layout.Bands(0).Columns.FromKey("FUT_END_DATE").Move(11)
        e.Layout.Bands(0).Columns.FromKey("FUT_END_DATE").CellStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).Columns.FromKey("FUT_END_DATE").CellStyle.Font.Size = FontSize.Medium
        e.Layout.Bands(0).Columns.FromKey("FUT_END_DATE").CellStyle.BackColor = Drawing.Color.FromArgb(255, 255, 153)
        'e.Layout.Bands(0).Columns.FromKey("Select").Move(12)
        'e.Layout.Bands(0).FilterOptions.FilterRowStyle.BackColor = Drawing.Color.FromArgb(254, 254, 254)

 

        'The boolean parameter inserts this header into viewstate, so that the grid will maintain
        ' it over a postback if it is not recreated.

        Dim colHead As ColumnHeader
        For i As Integer = 0 To e.Layout.Bands(0).HeaderLayout.Count – 1
            colHead = e.Layout.Bands(0).HeaderLayout(i)
            colHead.RowLayoutColumnInfo.OriginY = 1
        Next

        Dim customerGroup As New ColumnHeader(True)
        Dim chargeParametersGroup As New ColumnHeader(True)
        Dim currentPricesGroup As New ColumnHeader(True)
        Dim futurePricesGroup As New ColumnHeader(True)
        Dim restGroup As New ColumnHeader(True)

        customerGroup.Caption = "Customer"
        customerGroup.Style.HorizontalAlign = HorizontalAlign.Center
        customerGroup.RowLayoutColumnInfo.OriginX = 0
        customerGroup.RowLayoutColumnInfo.OriginY = 0

        chargeParametersGroup.Caption = "Charge Parameters"
        chargeParametersGroup.Style.HorizontalAlign = HorizontalAlign.Center
        chargeParametersGroup.RowLayoutColumnInfo.OriginX = 2
        chargeParametersGroup.RowLayoutColumnInfo.OriginY = 0

        currentPricesGroup.Caption = "Current Prices"
        currentPricesGroup.Style.HorizontalAlign = HorizontalAlign.Center
        currentPricesGroup.Style.BackColor = Drawing.Color.FromArgb(204, 255, 204)
        currentPricesGroup.RowLayoutColumnInfo.OriginX = 4
        currentPricesGroup.RowLayoutColumnInfo.OriginY = 0

        futurePricesGroup.Caption = "Future Prices"
        futurePricesGroup.Style.HorizontalAlign = HorizontalAlign.Center
        futurePricesGroup.Style.BackColor = Drawing.Color.FromArgb(255, 255, 153)
        futurePricesGroup.RowLayoutColumnInfo.OriginX = 8
        futurePricesGroup.RowLayoutColumnInfo.OriginY = 0

        restGroup.Caption = " "
        restGroup.RowLayoutColumnInfo.OriginX = 12
        restGroup.RowLayoutColumnInfo.OriginY = 0

        ' Add the newly created Header object to the HeaderLayout object
        e.Layout.Bands(0).HeaderLayout.Add(customerGroup)
        e.Layout.Bands(0).HeaderLayout.Add(chargeParametersGroup)
        e.Layout.Bands(0).HeaderLayout.Add(currentPricesGroup)
        e.Layout.Bands(0).HeaderLayout.Add(futurePricesGroup)
        e.Layout.Bands(0).HeaderLayout.Add(restGroup)

        e.Layout.Bands(0).HeaderStyle.Height = Unit.Point(15)
        e.Layout.Bands(0).HeaderStyle.Font.Name = "MS Sans Serif"
        e.Layout.Bands(0).HeaderStyle.Font.Bold = True
        e.Layout.Bands(0).HeaderStyle.Font.Size = FontSize.Large

        customerGroup.RowLayoutColumnInfo.SpanX = 2
        chargeParametersGroup.RowLayoutColumnInfo.SpanX = 2
        currentPricesGroup.RowLayoutColumnInfo.SpanX = 4
        futurePricesGroup.RowLayoutColumnInfo.SpanX = 4

    End Sub

    Protected Sub UltraWebGrid1_InitializeRow(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebGrid.RowEventArgs) Handles UltraWebGrid1.InitializeRow
        Try
            Dim isBinding As Boolean = CType(Session.Item("isBinding"), Boolean)
            If (isBinding) Then
                'e.Row.Cells("Select").Value = False

                For Each cl As UltraGridCell In e.Row.Cells
                    If (cl.Column.Header.Caption = "Select") Then
                        cl.AllowEditing = AllowEditing.Yes
                    End If
                    If (Not (cl.Column.Header.Caption = "Select")) Then
                        cl.AllowEditing = AllowEditing.No
                    End If
                Next
            End If
        Catch ex As Exception
            'showMessage(ex.Message + " ** in function UltraGrid1_InitializeRow", "")
        End Try
    End Sub
End Class

Public Class GridHeaderTemplate
    Implements ITemplate

    Public Sub InstantiateIn(ByVal container As Control) Implements System.Web.UI.ITemplate.InstantiateIn
        ' Cast the container to a HeaderItem
        Dim headerItem As HeaderItem = DirectCast(container, HeaderItem)

        Dim checkBox As New CheckBox()

        Dim cb As New CheckBox()
        cb.ID = "headerCB"
        'cb.Text = "Select"
        cb.Attributes.Add("onclick", "HeaderCheckedChanged();")
        headerItem.Controls.Add(cb)
    End Sub
End Class

Public Class PlaceHolderTemplate
    Implements ITemplate
    Public Sub InstantiateIn(ByVal container As Control) Implements System.Web.UI.ITemplate.InstantiateIn
        ' Cast the container to a CellItem
        Dim cellitem As CellItem = DirectCast(container, CellItem)
        Dim cb As New CheckBox()
        cb.ID = "cellCB"
        cellitem.Controls.Add(cb)
    End Sub
End Class

Thanks

Saran

0
Saravanan
Saravanan answered on Feb 17, 2009 6:14 PM

Mathew 

When binding the second time.. one thing which I noticed is "InstantiateIn" of GridHeaderTemplate doesn't fire, because of which the checkbox is not getting added. Another thing is the reference to "col.HeaderItem.FindControl("headerCB").ClientID" is not available which again because the HeaderCB didn't get added. Any help?

 Thanks

Saran

0
Saravanan
Saravanan answered on Feb 17, 2009 5:47 PM

Hi Mathew,

    I tried using the code given by you. When I bind the grid for the second time, the checkbox in the Header column disappears. Any suggestion??  Appreciate your help.

 Thanks

Saran