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 SubPrivate 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 SubPrivate 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 SubPrivate 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 SelectEnd SubAny help on this problem would be greatly appreciated.
