I have a grid with two buttons on each row, open and remove. Using OnItemCommand click the button goes to the code fine, the remove button works fine but the open button always gets the id from the first row.
This is the code that creates the two buttons, the same except for the names and images.
GridButtonColumn gridButtonColumn = new GridButtonColumn();
gridButtonColumn.ButtonType = GridButtonColumnType.ImageButton;
gridButtonColumn.ImageUrl = "~/Images/OpenLinkIcon.png";
gridButtonColumn.CommandName = "OpenLink";
gridButtonColumn.UniqueName = "OpenLink";
gridButtonColumn.Text = "Open Signup Template";
gridButtonColumn.Display = true;
gridButtonColumn.HeaderText = "";
gridButtonColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
gridButtonColumn.HeaderStyle.Width = Unit.Pixel(40);
signupGrid.MasterTableView.Columns.Add(gridButtonColumn);
gridButtonColumn = new GridButtonColumn();
gridButtonColumn.ButtonType = GridButtonColumnType.ImageButton;
gridButtonColumn.ImageUrl = "~/Images/DeleteIcon.png";
gridButtonColumn.CommandName = "Delete";
gridButtonColumn.UniqueName = "Delete";
gridButtonColumn.Text = "Remove Signup Template";
gridButtonColumn.Display = true;
gridButtonColumn.HeaderText = "";
gridButtonColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
gridButtonColumn.HeaderStyle.Width = Unit.Pixel(40);
signupGrid.MasterTableView.Columns.Add(gridButtonColumn);
This is the grid definition
<
div
id
=
"GridDiv"
runat
=
"server"
>
<
asp:panel
runat
=
"server"
ID
=
"Panel1"
CssClass
=
"windowPercent"
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"SignupGrid"
OnItemCommand
=
"Grid_ItemCommand"
></
telerik:RadGrid
>
</
asp:panel
>
</
div
>
And this the aspx.cs code for the Grid_ItemCommand.
protected void Grid_ItemCommand(object source, GridCommandEventArgs e)
{
if (isPageRefresh || e == null || e.Item == null) {
return;
}
GridDataItem item = (GridDataItem)e.Item;
string strId = item[SignupListData.FIELD_ID].Text;
switch (e.CommandName) {
case "Delete":
string name = item[SignupListData.FIELD_NAME].Text;
lblConfirm.Text = "Are you sure you want to remove sigup template \"" + name + "\"?";
RemoveSignup.Value = "Yes";
RemoveId.Value = strId;
break;
case "OpenLink":
this.Response.Redirect("/Signup/Design/" + strId);
break;
}
}
The and name values for Delete is the proper one for the row, while the for OpenLink is always the FIELD_ID from the first row,
Searching the forums and examples I found several different ways of getting the field id value but none of them worked.
No idea how to fix this problem.
George
FYI: the form to post this to the forum has a buggy edit box. If I backspace once its works but further ones will skip to the front of words removing spaces unexpectedly. It was rather difficult to make this post.