
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_ItemCommand
but 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
Sub
Protected
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
Next
End
Sub
Protected
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
Sub
Protected
Sub
grid_ItemCommand(
ByVal
source
As
Object
,
ByVal
e
As
GridCommandEventArgs)
If
e.CommandName =
"Delete"
Then
' Put delete commands in here ...
End
If
End
Sub
0
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