Hi,
I have a dropdown combobox which have 3 table listed. Each different selection will cause a selectedindexchanged event handler which reload the grid. There's 2 column declared on the front end: GridEditCommandColumn(edit) and GridButtonColumn(delete). Each time the grid is loaded or reloaded, a random number of boundcolumn are added to the grid based on the number of column from the selected table(from the combobox). All works fine except the edit and add row function. When I click add a new row, a textbox is added(in line) on the grid, for each column(except the edit and delete). After I enter value into the textbox, I can't seem to grab this value in the code behind.
Here's my code:
Here's the front end:
I have a dropdown combobox which have 3 table listed. Each different selection will cause a selectedindexchanged event handler which reload the grid. There's 2 column declared on the front end: GridEditCommandColumn(edit) and GridButtonColumn(delete). Each time the grid is loaded or reloaded, a random number of boundcolumn are added to the grid based on the number of column from the selected table(from the combobox). All works fine except the edit and add row function. When I click add a new row, a textbox is added(in line) on the grid, for each column(except the edit and delete). After I enter value into the textbox, I can't seem to grab this value in the code behind.
Here's my code:
Private Sub LoadRadGrid(ByVal selectedTable As String, ByVal loadType As String) Dim ds As DataSet = New DataSet Dim ConnString As String = ConfigurationManager.ConnectionStrings("SqlConn").ConnectionString Dim conn As SqlConnection = New SqlConnection(ConnString) Dim adapter As SqlDataAdapter = New SqlDataAdapter Dim sqlString As String = "SELECT ID, Iron, Name, Type FROM JOE_Coffee" If selectedTable = "JOE_Coffee" Then sqlString = "SELECT ID, Iron, Name, Type FROM JOE_Coffee" ElseIf selectedTable = "JOE_Cake" Then sqlString = "SELECT ID, Name FROM JOE_Cake" ElseIf selectedTable = "JOE_Tip" Then sqlString = "SELECT ID, Name FROM JOE_Tip" End If adapter.SelectCommand = New SqlCommand(sqlString, conn) Try adapter.Fill(ds, "Table1") For Each column As GridColumn In RadGrid1.MasterTableView.RenderColumns 'If Not column.UniqueName = "EditCommandColumn" Then 'End If If column.ColumnType = "GridBoundColumn" Then Dim columnIndex As Integer = column.OrderIndex RadGrid1.MasterTableView.Columns.Remove(column) End If Next For i As Integer = 0 To ds.Tables(0).Columns.Count - 1 Dim boundColumn(i) As GridBoundColumn boundColumn(i) = New GridBoundColumn() boundColumn(i).HeaderText = ds.Tables(0).Columns(i).ColumnName boundColumn(i).DataField = ds.Tables(0).Columns(i).ColumnName boundColumn(i).UniqueName = ds.Tables(0).Columns(i).ColumnName boundColumn(i).IsBoundToFieldName(ds.Tables(0).Columns(i).ColumnName) RadGrid1.MasterTableView.Columns.Add(boundColumn(i)) Next If loadType = "PageLoad" Or loadType = "LoadAfterDelete" Or loadType = "SelectedIndexChangeLoad" Then RadGrid1.DataSource = ds RadGrid1.DataBind() ElseIf loadType = "LoadAfterInsert" Or loadType = "LoadAfterUpdate" Then 'RadGrid1.MasterTableView.Columns.Clear() RadGrid1.DataSource = ds RadGrid1.Rebind() ElseIf loadType = "NeedDataSourceLoad" Then RadGrid1.DataSource = ds 'Don't need to bind for "NeedDataSourceLoad" End If For Each column As GridColumn In RadGrid1.Columns If column.HeaderText = "ID" Then column.Visible = False End If Next Catch ex As Exception End TryEnd Sub Protected Sub RadGrid1_CreateColumnEditor(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCreateColumnEditorEventArgs) Handles RadGrid1.CreateColumnEditor If (TypeOf e.Column Is GridBoundColumn) Then e.ColumnEditor = New GridTextBoxColumnEditor End IfEnd Sub Protected Sub RadGrid1_InsertCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) Handles RadGrid1.InsertCommand selectedTable = rcbTableName.SelectedValue.ToString() Dim iron As String = "" Dim name As String = "" Dim type As String = "" Dim ConnString As String = ConfigurationManager.ConnectionStrings("NineFiveSqlConn").ConnectionString Dim conn As SqlConnection = New SqlConnection(ConnString) Dim cmd As New SqlCommand() cmd.Connection = conn Dim sqlString As String = "INSERT INTO JMOS_Satellite(Iron, Name, Type) VALUES(@Iron, @Name, @Type)" If selectedTable = "JMOS_Satellite" Then sqlString = "INSERT INTO JMOS_Satellite(Iron, Name, Type) VALUES(@Iron, @Name, @Type)" ElseIf selectedTable = "JMOS_UplinkBeam" Then sqlString = "INSERT INTO JMOS_UplinkBeam(Name) VALUES(@Name)" ElseIf selectedTable = "JMOS_UplinkChannel" Then sqlString = "INSERT INTO JMOS_UplinkChannel(Name) VALUES(@Name)" End If cmd.CommandType = CommandType.Text cmd.CommandText = sqlString '<<<Need value to set parameter for insert>>> cmd.Parameters.Add("@Iron", SqlDbType.VarChar) cmd.Parameters("@Iron").Value = iron cmd.Parameters.Add("@Name", SqlDbType.VarChar) cmd.Parameters("@Name").Value = name cmd.Parameters.Add("@Type", SqlDbType.VarChar) cmd.Parameters("@Type").Value = type Try If Not conn.State = ConnectionState.Open Then conn.Open() cmd.ExecuteNonQuery() End If Catch ex As Exception e.Canceled = True Finally If Not conn.State = ConnectionState.Closed Then conn.Close() End If End Try loadType = "LoadAfterInsert" LoadRadGrid(selectedTable, loadType) End SubHere's the front end:
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="PageOne.aspx.vb" Inherits="WebRadGridDynamic.PageOne" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server"> </telerik:RadStyleSheetManager> <div align="center"> <br /> <br /> <br /> <br /> <telerik:RadComboBox ID="rcbTableName" runat="server" DataTextField="TableName" DataValueField="ID" AutoPostBack="true" OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged" Skin="Black" Width="200px"> <Items> <telerik:RadComboBoxItem Value="JMOS_Satellite" Text="Satellite" Selected="true" /> <telerik:RadComboBoxItem Value="JMOS_UplinkBeam" Text="Uplink Beam" /> <telerik:RadComboBoxItem Value="JMOS_UplinkChannel" Text ="Uplink Channel" /> </Items> </telerik:RadComboBox> <br /> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager> <br /> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function RowDblClick(sender, eventArgs) { sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical()); } </script> </telerik:RadCodeBlock> <br /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <br /> <telerik:RadGrid ID="RadGrid1" runat="server" Width="500px" GridLines="None" PageSize="13" AllowSorting="True" AllowPaging="True" ShowStatusBar="True" Skin="Black" Height="225px" AutoGenerateColumns="False" > <AlternatingItemStyle HorizontalAlign="Left" /> <MasterTableView DataKeyNames="ID" AllowMultiColumnSorting="True" Width="100%" CommandItemDisplay="Top" EditMode="InPlace" > <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings> <Columns> <telerik:GridEditCommandColumn UpdateText="Update" UniqueName="EditCommandColumn" CancelText="Cancel" EditText="Edit"> <HeaderStyle /> <ItemStyle Width="20px" /> </telerik:GridEditCommandColumn> <telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete" ConfirmTitle="Delete" ConfirmDialogType="Classic" ConfirmDialogHeight="60" ConfirmDialogWidth ="150" ConfirmText="Are you sure you want to delete row?" > <HeaderStyle /> <ItemStyle Width="20px" /> </telerik:GridButtonColumn> </Columns> <EditFormSettings CaptionFormatString="Edit details ID {0}" CaptionDataField="ID"> <FormTableItemStyle Width="100%" Height="29px"></FormTableItemStyle> <FormTableStyle GridLines="None" CellSpacing="0" CellPadding="2"></FormTableStyle> <FormStyle Width="100%" BackColor="#eef2ea"></FormStyle> <EditColumn ButtonType="ImageButton" /> </EditFormSettings> </MasterTableView> <ClientSettings AllowColumnHide="True"> <ClientEvents OnRowDblClick="RowDblClick" /> <Scrolling AllowScroll="true" UseStaticHeaders="true" /> </ClientSettings> <EditItemStyle /> <HeaderStyle HorizontalAlign="Center" /> <SelectedItemStyle /> <ItemStyle HorizontalAlign="Left" /> </telerik:RadGrid> <br /> <br /> </div> <div > </div> </form> </body> </html>