Hello,
i'm trying to select items from a check box on a radgrid but the RadGrid1_ItemCommand does't work...
this is my codebehind
namespace Website
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
RadGrid1.DataSource = getDataSource();
RadGrid1.DataBind();
}
}
private DataTable getDataSource()
{
var dt = new DataTable();
dt.Columns.Add("IDLOTE");
dt.Columns.Add("DESC");
for (int i = 1; i <= 20; i++)
{
DataRow dr = dt.NewRow();
dr["IDLOTE"] = i;
dr["DESC"] = "desc" + i;
dt.Rows.Add(dr);
}
return dt;
}
protected void CheckUnckeckAll(object sender, EventArgs e)
{
}
protected void CheckUncheckItem(object sender, EventArgs e)
{
((sender as CheckBox).NamingContainer as GridItem).Selected = (sender as CheckBox).Checked;
}
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
ArrayList selectedItems;
if (Session["selectedItems"] == null)
{
selectedItems = new ArrayList();
}
else
{
selectedItems = (ArrayList)Session["selectedItems"];
}
if (e.CommandName == RadGrid.SelectCommandName && e.Item is GridDataItem)
{
GridDataItem dataItem = (GridDataItem)e.Item;
string customerID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IDLOTE"].ToString();
selectedItems.Add(customerID);
Session["selectedItems"] = selectedItems;
}
if (e.CommandName == RadGrid.DeselectCommandName && e.Item is GridDataItem)
{
GridDataItem dataItem = (GridDataItem)e.Item;
string customerID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IDLOTE"].ToString();
selectedItems.Remove(customerID);
Session["selectedItems"] = selectedItems;
}
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
if (Session["selectedItems"] != null)
{
ArrayList selectedItems = (ArrayList)Session["selectedItems"];
Int16 stackIndex;
for (stackIndex = 0; stackIndex <= selectedItems.Count - 1; stackIndex++)
{
string curItem = selectedItems[stackIndex].ToString();
foreach (GridItem item in RadGrid1.MasterTableView.Items)
{
if (item is GridDataItem)
{
GridDataItem dataItem = (GridDataItem)item;
if (curItem.Equals(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["CustomerID"].ToString()))
{
dataItem.Selected = true;
break;
}
}
}
}
}
}
protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource = getDataSource();
}
}
}
this is the view,
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Website.WebForm1" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!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">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<!-- content start -->
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadGrid ID="RadGrid1" runat="server" OnItemCommand="RadGrid1_ItemCommand"
OnPreRender="RadGrid1_PreRender" OnNeedDataSource="RadGrid1_NeedDataSource" GridLines="None"
AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" Skin="Windows7"
AllowMultiRowSelection="True" Culture="pt-PT" Width="900px" PageSize="5">
<ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True" EnableRowHoverStyle="true">
<Selecting AllowRowSelect="true" />
<Resizing AllowRowResize="False" EnableRealTimeResize="False" ResizeGridOnColumnResize="False"
AllowColumnResize="False"></Resizing>
</ClientSettings>
<MasterTableView AllowMultiColumnSorting="true" AutoGenerateColumns="False" DataKeyNames="IDLOTE">
<Columns>
<telerik:GridButtonColumn Visible="false" Text="Select" CommandName="Select" />
<telerik:GridButtonColumn Visible="false" Text="Deselect" CommandName="Deselect" />
<telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn" AllowFiltering="false">
<HeaderTemplate>
<asp:CheckBox ID="headerChkbox" OnCheckedChanged="CheckUnckeckAll" AutoPostBack="True"
runat="server"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" OnCheckedChanged="CheckUncheckItem" AutoPostBack="True"
runat="server"></asp:CheckBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="IDLOTE" HeaderText="IDLOTE" ReadOnly="True" SortExpression="DESC"
UniqueName="IDLOTE">
<HeaderStyle Width="120px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="DESC" HeaderText="DESC" SortExpression="DESC"
UniqueName="DESC">
<HeaderStyle Width="340px" />
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<PagerStyle Mode="NextPrevAndNumeric"></PagerStyle>
</telerik:RadGrid>
</div>
</form>
</body>
</html>
what can be wrong?
i'm trying to select items from a check box on a radgrid but the RadGrid1_ItemCommand does't work...
this is my codebehind
namespace Website
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
RadGrid1.DataSource = getDataSource();
RadGrid1.DataBind();
}
}
private DataTable getDataSource()
{
var dt = new DataTable();
dt.Columns.Add("IDLOTE");
dt.Columns.Add("DESC");
for (int i = 1; i <= 20; i++)
{
DataRow dr = dt.NewRow();
dr["IDLOTE"] = i;
dr["DESC"] = "desc" + i;
dt.Rows.Add(dr);
}
return dt;
}
protected void CheckUnckeckAll(object sender, EventArgs e)
{
}
protected void CheckUncheckItem(object sender, EventArgs e)
{
((sender as CheckBox).NamingContainer as GridItem).Selected = (sender as CheckBox).Checked;
}
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
ArrayList selectedItems;
if (Session["selectedItems"] == null)
{
selectedItems = new ArrayList();
}
else
{
selectedItems = (ArrayList)Session["selectedItems"];
}
if (e.CommandName == RadGrid.SelectCommandName && e.Item is GridDataItem)
{
GridDataItem dataItem = (GridDataItem)e.Item;
string customerID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IDLOTE"].ToString();
selectedItems.Add(customerID);
Session["selectedItems"] = selectedItems;
}
if (e.CommandName == RadGrid.DeselectCommandName && e.Item is GridDataItem)
{
GridDataItem dataItem = (GridDataItem)e.Item;
string customerID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IDLOTE"].ToString();
selectedItems.Remove(customerID);
Session["selectedItems"] = selectedItems;
}
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
if (Session["selectedItems"] != null)
{
ArrayList selectedItems = (ArrayList)Session["selectedItems"];
Int16 stackIndex;
for (stackIndex = 0; stackIndex <= selectedItems.Count - 1; stackIndex++)
{
string curItem = selectedItems[stackIndex].ToString();
foreach (GridItem item in RadGrid1.MasterTableView.Items)
{
if (item is GridDataItem)
{
GridDataItem dataItem = (GridDataItem)item;
if (curItem.Equals(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["CustomerID"].ToString()))
{
dataItem.Selected = true;
break;
}
}
}
}
}
}
protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource = getDataSource();
}
}
}
this is the view,
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Website.WebForm1" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!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">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<!-- content start -->
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadGrid ID="RadGrid1" runat="server" OnItemCommand="RadGrid1_ItemCommand"
OnPreRender="RadGrid1_PreRender" OnNeedDataSource="RadGrid1_NeedDataSource" GridLines="None"
AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" Skin="Windows7"
AllowMultiRowSelection="True" Culture="pt-PT" Width="900px" PageSize="5">
<ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True" EnableRowHoverStyle="true">
<Selecting AllowRowSelect="true" />
<Resizing AllowRowResize="False" EnableRealTimeResize="False" ResizeGridOnColumnResize="False"
AllowColumnResize="False"></Resizing>
</ClientSettings>
<MasterTableView AllowMultiColumnSorting="true" AutoGenerateColumns="False" DataKeyNames="IDLOTE">
<Columns>
<telerik:GridButtonColumn Visible="false" Text="Select" CommandName="Select" />
<telerik:GridButtonColumn Visible="false" Text="Deselect" CommandName="Deselect" />
<telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn" AllowFiltering="false">
<HeaderTemplate>
<asp:CheckBox ID="headerChkbox" OnCheckedChanged="CheckUnckeckAll" AutoPostBack="True"
runat="server"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" OnCheckedChanged="CheckUncheckItem" AutoPostBack="True"
runat="server"></asp:CheckBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="IDLOTE" HeaderText="IDLOTE" ReadOnly="True" SortExpression="DESC"
UniqueName="IDLOTE">
<HeaderStyle Width="120px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="DESC" HeaderText="DESC" SortExpression="DESC"
UniqueName="DESC">
<HeaderStyle Width="340px" />
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<PagerStyle Mode="NextPrevAndNumeric"></PagerStyle>
</telerik:RadGrid>
</div>
</form>
</body>
</html>
what can be wrong?