Steven Webster
Top achievements
Rank 1
Steven Webster
asked on 30 Sep 2010, 04:23 PM
Hi there
Could someone advise me how to create a gridbuttoncolumn to delete records in a dynamic radgrid that's generated on the fly. I'm using the code in this link as a reference - http://www.telerik.com/help/aspnet-ajax/grdchanginggridstructuredynamically.html, but can't get the command to fire.
I've added a hander for the item_command:
but I never get that far when the code runs.
Thanks in advance!!
Steven
Could someone advise me how to create a gridbuttoncolumn to delete records in a dynamic radgrid that's generated on the fly. I'm using the code in this link as a reference - http://www.telerik.com/help/aspnet-ajax/grdchanginggridstructuredynamically.html, but can't get the command to fire.
I've added a hander for the item_command:
AddHandler grid.ItemCommand, AddressOf grid_ItemCommandbut I never get that far when the code runs.
Thanks in advance!!
Steven
3 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 01 Oct 2010, 05:53 AM
Hello Steven,
The following code snippet shows how to add GridButtonColumn dynamically. You can also attach ItemCommand event to fire the Delete command.
C#:
And please go through the following documentation.
http://www.telerik.com/help/aspnet-ajax/grdprogrammaticcreation.html#Creating_the_grid_entirely_in_the_code_behind
Thanks,
Princy.
The following code snippet shows how to add GridButtonColumn dynamically. You can also attach ItemCommand event to fire the Delete command.
C#:
protected void Page_Init(object sender, EventArgs e) { RadGrid grid = new RadGrid(); grid.ID = "RadGrid1"; //creating GridButtonColumn GridButtonColumn btncol = new GridButtonColumn(); grid.MasterTableView.Columns.Add(btncol); btncol.ButtonType = GridButtonColumnType.LinkButton; // setting ButtonType as LinkButton btncol.CommandName = "Delete"; btncol.Text = "delete"; //attaching ItemCommand event grid.ItemCommand+=new GridCommandEventHandler(grid_ItemCommand); PlaceHolder1.Controls.Add(grid); } protected void grid_ItemCommand(object source, GridCommandEventArgs e) { if (e.CommandName == "Delete") { } }And please go through the following documentation.
http://www.telerik.com/help/aspnet-ajax/grdprogrammaticcreation.html#Creating_the_grid_entirely_in_the_code_behind
Thanks,
Princy.
0
Steven Webster
Top achievements
Rank 1
answered on 01 Oct 2010, 04:09 PM
Thanks Princy - much appreciated. I think I was adding the AddHandler in the wrong place. Anyways, bringing this a step further, based on the selection made in the dropdown list, a query is run that will return a resultset made up of multiple tables (with different columns in each). The code below works well to display the multiple dynamic radgrids and the delete command works, however, I get a "Failed to load viewstate" error intermittently when changing the value of the dropdown. I know it's because there are a different number of gridviews displayed with different id's depending on the option selected so I can't figure out which ones to rebind. Would you have any suggestions please?
Protected Sub Page_Init(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Init PopulateGridOnPageInit() End SubProtected Sub PopulateGridOnPageInit() Dim literal1 As New Literal literal1.Text = "<br/><br/>" Dim ddlValue As String = Request.Form.Get("DropDownList1") Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("StagingConnectionString").ConnectionString) Dim cmd As New SqlCommand() cmd.Connection = conn cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "spLookupChecksNew" If ddlValue Is Nothing Then ddlValue = DropDownList1.SelectedValue End If cmd.Parameters.Add(New SqlParameter("@Lab", SqlDbType.Int)) 'Assign the search value to the parameter. cmd.Parameters("@Lab").Value = ddlValue Dim da As SqlDataAdapter = New SqlDataAdapter(cmd) Dim ds As New DataSet() ds.Clear() ds.Tables.Clear() da.Fill(ds) Dim i As Integer = 0 For Each DataTable In ds.Tables Dim grid As RadGrid = New RadGrid grid.ID = ddlValue.ToString + "grid" + i.ToString grid.Width = Unit.Pixel(500) grid.AllowSorting = True grid.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric grid.AllowPaging = True grid.Skin = "Sunset" grid.DataSource = ds.Tables(i) grid.MasterTableView.AutoGenerateColumns = False grid.MasterTableView.EnableColumnsViewState = False grid.MasterTableView.EnableViewState = False Dim boundColumn As GridBoundColumn Dim DeleteColumn As GridButtonColumn If Not (ddlValue Is Nothing) Then For Each DataColumn In ds.Tables(i).Columns boundColumn = New GridBoundColumn boundColumn.HeaderText = DataColumn.ToString boundColumn.DataField = DataColumn.ToString boundColumn.UniqueName = DataColumn.ToString grid.MasterTableView.Columns.Add(boundColumn) Next Dim btncol As GridButtonColumn = New GridButtonColumn grid.MasterTableView.Columns.Add(btncol) btncol.ButtonType = GridButtonColumnType.LinkButton ' setting ButtonType as LinkButton btncol.CommandName = "Delete" btncol.Text = "delete" 'attaching ItemCommand event AddHandler grid.ItemCommand, AddressOf grid_ItemCommand Select Case ddlValue Case "0" grid.DataSourceID = "" grid.DataSource = New Object() {} End Select If ds.Tables(i).Rows.Count > 0 Then PlaceHolder1.Controls.Add(grid) End If PlaceHolder1.Controls.Add(literal1) Else grid.DataSourceID = "" grid.DataSource = New Object() {} End If i = i + 1 NextEnd SubProtected Sub DropDownList1_SelectedIndexChanged( _ ByVal sender As Object, _ ByVal e As EventArgs) _ Handles DropDownList1.SelectedIndexChanged For Each childControl As Control In PlaceHolder1.Controls If TypeOf childControl Is RadGrid Then Dim grid As RadGrid = CType(childControl, RadGrid) grid.Rebind() End If Next 'Dim grid As RadGrid = CType(PlaceHolder1.FindControl("grid"), RadGrid) 'grid.Rebind() End SubProtected Sub grid_ItemCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) If e.CommandName = "Delete" Then ' Put delete commands in here ... End IfEnd Sub0
Hello Steven,
I suggest that you try binding the grid through its NeedDataSource event instead of just setting its DataSource on Page_Init and see if it makes any difference.
All the best,
Iana
the Telerik team
I suggest that you try binding the grid through its NeedDataSource event instead of just setting its DataSource on Page_Init and see if it makes any difference.
All the best,
Iana
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items