Hi,
I'm trying to build a RadGrid and I wanted to use Template columns programmatically, so I followed the tutorial here and everything worked brilliantly. I even got as far as beginning to create a template for the editing and adding of new records. The problem however has occurred that I've added a series of detail tables to my grid and now when I click to expand in to one of the detail tables the Bound columns that I've added to the Master Table still maintain their values but the Template columns completely lose their values.
I don't know if I'm missing something or I'm doing something in an incorrect way but the template columns display so perfectly and the fact that they disappear whenever you expand the grid is really disheartening.
Here's the code:
Any help on this problem would be greatly appreciated.
I'm trying to build a RadGrid and I wanted to use Template columns programmatically, so I followed the tutorial here and everything worked brilliantly. I even got as far as beginning to create a template for the editing and adding of new records. The problem however has occurred that I've added a series of detail tables to my grid and now when I click to expand in to one of the detail tables the Bound columns that I've added to the Master Table still maintain their values but the Template columns completely lose their values.
I don't know if I'm missing something or I'm doing something in an incorrect way but the template columns display so perfectly and the fact that they disappear whenever you expand the grid is really disheartening.
Here's the code:
Protected
Sub
Page_Init(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Init
RenderOrderGrid()
End
Sub
Private
Sub
RenderOrderGrid()
Dim
myDataSet
As
DataSet
Dim
rgdOrders
As
RadGrid
myDataSet = DataManager.OrderList
'===Set values for RadGrid===
rgdOrders =
New
RadGrid
rgdOrders.AllowPaging =
True
rgdOrders.AutoGenerateColumns =
False
rgdOrders.GroupingEnabled =
False
rgdOrders.ShowGroupPanel =
True
rgdOrders.AllowSorting =
False
rgdOrders.PagerStyle.AlwaysVisible =
True
rgdOrders.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric
rgdOrders.ClientSettings.AllowDragToGroup =
False
rgdOrders.MasterTableView.PageSize = 20
rgdOrders.MasterTableView.Name =
"OrdersMasterTable"
rgdOrders.AutoGenerateEditColumn =
True
rgdOrders.AutoGenerateDeleteColumn =
False
rgdOrders.Skin = Session(
"TelerikSkin"
)
rgdOrders.DataSource = myDataSet.Tables(
"OrderList"
)
'===Set values for Master Table===
rgdOrders.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top
rgdOrders.MasterTableView.CommandItemSettings.ShowAddNewRecordButton =
False
rgdOrders.MasterTableView.CommandItemSettings.ShowRefreshButton =
True
rgdOrders.MasterTableView.CommandItemSettings.RefreshImageUrl =
"../img/Refresh.gif"
rgdOrders.MasterTableView.CommandItemSettings.RefreshText =
"Refresh Grid"
'===Create Columns===
RenderColumns(rgdOrders)
'===Create a table view to use as detail table===
Dim
myDetailTable
As
Telerik.Web.UI.GridTableView
myDetailTable =
New
GridTableView
myDetailTable.Width = Unit.Percentage(100)
myDetailTable.Name =
"AdminOrdersOrderlinesDetailTable"
rgdOrders.MasterTableView.DetailTables.Add(myDetailTable)
myDetailTable =
New
GridTableView
myDetailTable.Width = Unit.Percentage(100)
myDetailTable.Name =
"AdminOrdersNotesDetailTable"
rgdOrders.MasterTableView.DetailTables.Add(myDetailTable)
AddHandler
rgdOrders.ColumnCreated,
AddressOf
rgdOrders_ColumnCreated
AddHandler
rgdOrders.DetailTableDataBind,
AddressOf
rgdOrders_DetailTableDataBind
rgdOrders.MasterTableView.TableLayout = GridTableLayout.Fixed
divOrders.Controls.Add(rgdOrders)
End
Sub
Private
Sub
RenderColumns(
ByRef
rgdOrders
As
RadGrid)
'===Create Columns===
Dim
orderIDColumn, statusColumn
As
GridBoundColumn
Dim
customerTemplateColumn, dateTemplateColumn, repCodeScanNoTemplateColumn, contactLettersTemplateColumn
As
GridTemplateColumn
'Order ID Column
orderIDColumn =
New
GridBoundColumn()
orderIDColumn.HeaderText =
"Order ID"
orderIDColumn.UniqueName =
"mkOrderId"
orderIDColumn.DataField =
"mkOrderId"
orderIDColumn.HeaderStyle.CssClass =
"gridFont"
orderIDColumn.HeaderStyle.Width = 60
orderIDColumn.ItemStyle.CssClass =
"gridFont"
'Customer Details Column
customerTemplateColumn =
New
GridTemplateColumn()
customerTemplateColumn.ItemTemplate =
New
CustomerTemplate(
"CustomerName"
)
customerTemplateColumn.HeaderText =
"Customer Details"
customerTemplateColumn.UniqueName =
"CustomerDetails"
customerTemplateColumn.HeaderStyle.CssClass =
"gridFont"
customerTemplateColumn.ItemStyle.CssClass =
"gridFont"
'Dates Column
dateTemplateColumn =
New
GridTemplateColumn()
dateTemplateColumn.ItemTemplate =
New
DateTemplate(
"Dates"
)
dateTemplateColumn.HeaderText =
"Dates"
dateTemplateColumn.UniqueName =
"Dates"
dateTemplateColumn.HeaderStyle.CssClass =
"gridFont"
dateTemplateColumn.HeaderStyle.Width = 150
dateTemplateColumn.ItemStyle.CssClass =
"gridFont"
'Status Column
statusColumn =
New
GridBoundColumn()
statusColumn.DataField =
"Status"
statusColumn.HeaderText =
"Status"
statusColumn.UniqueName =
"Status"
statusColumn.HeaderStyle.CssClass =
"gridFont"
statusColumn.HeaderStyle.Width = 120
statusColumn.ItemStyle.CssClass =
"gridFont"
'RepCode/ScanNo Column
repCodeScanNoTemplateColumn =
New
GridTemplateColumn()
repCodeScanNoTemplateColumn.ItemTemplate =
New
RepCodeScanNoTemplate(
"RepCodeScanNo"
)
repCodeScanNoTemplateColumn.HeaderText =
"Rep Code / Scan No"
repCodeScanNoTemplateColumn.UniqueName =
"RepCode"
repCodeScanNoTemplateColumn.HeaderStyle.CssClass =
"gridFont"
repCodeScanNoTemplateColumn.HeaderStyle.Width = 150
repCodeScanNoTemplateColumn.ItemStyle.CssClass =
"gridFont"
'Print Letters
contactLettersTemplateColumn =
New
GridTemplateColumn()
contactLettersTemplateColumn.ItemTemplate =
New
ContactLettersTemplate(
"PrintLetters"
)
contactLettersTemplateColumn.HeaderText =
"Print Letters"
contactLettersTemplateColumn.UniqueName =
"PrintLetters"
contactLettersTemplateColumn.HeaderStyle.CssClass =
"gridFont"
contactLettersTemplateColumn.HeaderStyle.Width = 80
contactLettersTemplateColumn.ItemStyle.CssClass =
"gridFont"
'Add Columns To Grid
rgdOrders.MasterTableView.Columns.Add(orderIDColumn)
rgdOrders.MasterTableView.Columns.Add(customerTemplateColumn)
rgdOrders.MasterTableView.Columns.Add(dateTemplateColumn)
rgdOrders.MasterTableView.Columns.Add(statusColumn)
rgdOrders.MasterTableView.Columns.Add(repCodeScanNoTemplateColumn)
rgdOrders.MasterTableView.Columns.Add(contactLettersTemplateColumn)
End
Sub
Private
Sub
rgdOrders_DetailTableDataBind(
ByVal
source
As
Object
,
ByVal
e
As
GridDetailTableDataBindEventArgs)
Dim
dataItem
As
GridDataItem =
CType
(e.DetailTableView.ParentItem, GridDataItem)
Select
Case
e.DetailTableView.DetailTableIndex
Case
0
Dim
myOrderId
As
Decimal
=
CDec
(dataItem.Item(
"mkOrderId"
).Text)
Dim
myDataSet
As
New
DataSet
'===Get the DetailTable data===
myDataSet = DataManager.OrderLinesGet(myOrderId)
e.DetailTableView.DataSource = myDataSet.Tables(
"OrderLines"
)
e.DetailTableView.AutoGenerateColumns =
False
e.DetailTableView.CommandItemDisplay = GridCommandItemDisplay.Top
e.DetailTableView.CommandItemSettings.ShowAddNewRecordButton =
False
e.DetailTableView.CommandItemSettings.ShowRefreshButton =
False
e.DetailTableView.Name =
"AdminOrdersOrderlinesDetailTable"
e.DetailTableView.AllowPaging =
True
Dim
boundColumn
As
GridBoundColumn
'Product Name Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"Product Name"
boundColumn.UniqueName =
"ProductName"
boundColumn.DataField =
"ProductName"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
'Quantity Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"Quantity"
boundColumn.UniqueName =
"Quantity"
boundColumn.DataField =
"Quantity"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.HeaderStyle.Width = 120
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
'Unit Price Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"Unit Price"
boundColumn.UniqueName =
"UnitPrice"
boundColumn.DataField =
"UnitPrice"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.HeaderStyle.Width = 120
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
'Line Total Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"Line Total"
boundColumn.UniqueName =
"LineTotal"
boundColumn.DataField =
"LineTotal"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.HeaderStyle.Width = 120
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
Case
1
Dim
myOrderId
As
Decimal
=
CDec
(dataItem.Item(
"mkOrderId"
).Text)
Dim
myDataSet
As
New
DataSet
'===Get the DetailTable data===
myDataSet = DataManager.OrderNotesGet(myOrderId)
e.DetailTableView.DataSource = myDataSet.Tables(
"OrderNotesGet"
)
e.DetailTableView.AutoGenerateColumns =
False
e.DetailTableView.CommandItemDisplay = GridCommandItemDisplay.Top
e.DetailTableView.CommandItemSettings.AddNewRecordImageUrl =
"../img/AddRecord.gif"
e.DetailTableView.CommandItemSettings.AddNewRecordText =
"Add New Record"
e.DetailTableView.CommandItemSettings.ShowRefreshButton =
False
e.DetailTableView.Name =
"AdminOrdersNotesDetailTable"
e.DetailTableView.AllowPaging =
True
Dim
boundColumn
As
GridBoundColumn
'Date / Time Added Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"Date / Time Added"
boundColumn.UniqueName =
"DateTimeAdded"
boundColumn.DataField =
"DateTimeAdded"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.HeaderStyle.Width = 120
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
'Note Type Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"Note Type"
boundColumn.UniqueName =
"Type"
boundColumn.DataField =
"Type"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.HeaderStyle.Width = 80
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
'Note Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"Note"
boundColumn.UniqueName =
"Note"
boundColumn.DataField =
"Note"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
'User Column
boundColumn =
New
GridBoundColumn()
boundColumn.HeaderText =
"User"
boundColumn.UniqueName =
"UserName"
boundColumn.DataField =
"UserName"
boundColumn.HeaderStyle.CssClass =
"gridFont"
boundColumn.HeaderStyle.Width = 80
boundColumn.ItemStyle.CssClass =
"gridFont"
e.DetailTableView.Columns.Add(boundColumn)
End
Select
End
Sub
Any help on this problem would be greatly appreciated.