I'm having a problem getting the SelectedIndexChangedto fire on my GridDropDownColumn. I have a top RadComboBox that gives me different groups and the grid changes according to its selected value. Each row has 2 columns, the second GridDropDownColumn will get the available dates for the selected provider in the first GridDropDownColumn. I was also trying to have the all selected by default on load. Here is the code i'm using.
C#:
Any advice will be apreciated!
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ucCitasMasivas.ascx.cs" Inherits="Schedules.Controls.ucCitasMasivas" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<
style
type
=
"text/css"
>
.style1
{
width: 372px;
}
</
style
>
<
div
style
=
"height: 100%; width:100%"
>
<
table
>
<
tr
>
<
td
class
=
"style1"
>
<
asp:Label
ID
=
"lblTipoCitas"
runat
=
"server"
Text
=
"Tipo de Citas Masivas: "
></
asp:Label
>
<
telerik:RadComboBox
ID
=
"cmbTipoCitas"
Runat
=
"server"
AutoPostback
=
"true"
Font-Bold
=
"true"
onselectedindexchanged
=
"cmbTipoCitas_SelectedIndexChanged"
>
</
telerik:RadComboBox
>
</
td
>
</
tr
>
</
table
>
<
telerik:RadGrid
ID
=
"grdCitasMasivas"
runat
=
"server"
Skin
=
"Office2007"
PageSize
=
"50"
GridLines
=
"None"
AllowMultiRowEdit
=
"True"
onprerender
=
"grdCitasMasivas_PreRender"
AllowRowSelect
=
"True"
AllowMultiRowSelection
=
"True"
OnColumnCreated
=
"grdCitasMasivas_ColumnCreated"
onitemdatabound
=
"grdCitasMasivas_ItemDataBound"
onGridCreated
=
"grdCitasMasivas_ItemCreated"
>
<
MasterTableView
EditMode
=
"InPlace"
>
<
RowIndicatorColumn
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridClientSelectColumn
UniqueName
=
"Selected"
/>
<
telerik:GridDropDownColumn
UniqueName
=
"gddProveedor"
HeaderText
=
"Proveedor"
DropDownControlType
=
"RadComboBox"
/>
<
telerik:GridDropDownColumn
UniqueName
=
"gddSelectFecha"
HeaderText
=
"Fecha"
DropDownControlType
=
"RadComboBox"
/>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
C#:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data;
using
System.Data.Common;
using
Telerik.Web.UI;
using
CFSE_Data;
using
Scheduler_Objects;
namespace
Schedules.Controls
{
public
partial
class
ucCitasMasivas : System.Web.UI.UserControl
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
grdCitasMasivas.ClientSettings.Selecting.AllowRowSelect =
true
;
DataSets.dsAppGroupType.spGetAppGroupType1DataTable dtAppGroups =
new
Schedules.DataSets.dsAppGroupType.spGetAppGroupType1DataTable();
DataSets.dsAppGroupTypeTableAdapters.spGetAppGroupType1TableAdapter GroupAdapter =
new
Schedules.DataSets.dsAppGroupTypeTableAdapters.spGetAppGroupType1TableAdapter();
GroupAdapter.Fill(dtAppGroups);
foreach
(System.Data.DataRow r
in
dtAppGroups.Rows)
{
cmbTipoCitas.Items.Add(
new
Telerik.Web.UI.RadComboBoxItem(r[1].ToString(), r[0].ToString()));
}
setGridView();
}
}
protected
void
grdCitasMasivas_PreRender(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
foreach
(GridItem i
in
grdCitasMasivas.MasterTableView.Items)
{
GridEditableItem edit = i
as
GridDataItem;
edit.Edit =
true
;
}
}
foreach
(GridDataItem item
in
grdCitasMasivas.Items)
{
item.Selected =
true
;
}
grdCitasMasivas.Rebind();
}
protected
void
cmbTipoCitas_SelectedIndexChanged(
object
sender, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
{
setGridView();
}
public
static
DataTable GetAppGroup(
int
GroupCode)
{
DataTable dtable =
null
;
DBManager db =
new
DBManager();
DbParameter p =
null
;
db.CommandName =
"Schedule.spGetAppgroupbyGrpid"
;
p = db.Provider.CreateParameter();
p.ParameterName =
"@P_Group_Code"
;
p.DbType = DbType.Int32;
p.Value = GroupCode;
db.CommandParameters.Add(p);
try
{
dtable = db.ExecuteQuery(
false
);
}
catch
(Exception ex)
{
dtable =
null
;
throw
new
Exception(
"Error en lectura de la base de datos. ["
+ ex.Message +
"]"
);
}
finally
{
db =
null
;
}
return
dtable;
}
public
static
DataTable GetProviders(
string
Taxonomy,
int
City_Id,
int
AppType)
{
DataTable dtable =
null
;
DBManager db =
new
DBManager();
db.CommandName =
"Schedule.uspGetProviderByTaxAndAvlMasiva"
;
DbParameter p = db.Provider.CreateParameter();
p.ParameterName =
"@Taxonomy"
;
p.DbType = DbType.String;
p.Value = Taxonomy;
DbParameter p2 = db.Provider.CreateParameter();
p2.ParameterName =
"@City_Id"
;
p2.DbType = DbType.Int32;
p2.Value = City_Id;
DbParameter p3 = db.Provider.CreateParameter();
p3.ParameterName =
"@AppType"
;
p3.DbType = DbType.Int32;
p3.Value = AppType;
db.CommandParameters.Add(p);
db.CommandParameters.Add(p2);
db.CommandParameters.Add(p3);
try
{
dtable = db.ExecuteQuery(
false
);
}
catch
(Exception ex)
{
dtable =
null
;
throw
new
Exception(
"Error en lectura de la base de datos. ["
+ ex.Message +
"]"
);
}
finally
{
db =
null
;
}
return
dtable;
}
public
static
String GetFechas(
int
Provider,
int
AppType)
{
String fechas = ProviderSites.GetAvailableDays(
"233"
, DateTime.Today.Year.ToString(), DateTime.Today.Month.ToString(),
"2"
);
//TODOL: set provider id
return
fechas;
}
protected
void
setGridView()
{
int
Groupid = Int32.Parse(cmbTipoCitas.SelectedValue.ToString());
grdCitasMasivas.DataSource = GetAppGroup(Groupid);
grdCitasMasivas.Rebind();
}
protected
void
grdCitasMasivas_ColumnCreated(
object
sender, GridColumnCreatedEventArgs e)
{
if
(e.Column.UniqueName ==
"Group_Code"
|| e.Column.UniqueName ==
"Order_Group_ID"
|| e.Column.UniqueName ==
"APP_TYPE_ID"
|| e.Column.UniqueName ==
"REPEAT_NUMBER"
)
{
e.Column.Display =
false
;
}
//columna descripcion es read only
if
(e.Column.UniqueName ==
"APP_TYPE_DESC"
)
{
GridBoundColumn col = (GridBoundColumn)e.Column;
col.ReadOnly =
true
;
}
}
protected
void
grdCitasMasivas_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridHeaderItem)
{
GridHeaderItem headerItem = (GridHeaderItem)e.Item;
headerItem.Cells[8].Text =
"Descripción "
;
}
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem editedItem = e.Item
as
GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridDropDownColumnEditor editor = editMan.GetColumnEditor(
"gddProveedor"
)
as
GridDropDownColumnEditor;
RadComboBox rcmb = editedItem[
"gddProveedor"
].Controls[0]
as
RadComboBox;
TextBox txtbx = (TextBox)editedItem.Controls[7].Controls[0];
int
AppType = Convert.ToInt32(txtbx.Text.ToString());
DataTable table = GetProviders(
"79"
, 65, AppType);
//TODO: Set tax and city id from viewstate
editor.DataSource = table;
editor.DataTextField =
"Site_Name"
;
editor.DataValueField =
"Site_ID"
;
editor.DataBind();
}
}
protected
void
grdCitasMasivas_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridDropDownListColumnEditor gddProviders = (e.Item
as
GridEditFormItem).EditManager.GetColumnEditor(
"gddSelectFecha"
)
as
GridDropDownListColumnEditor;
gddProviders.ComboBoxControl.AutoPostBack =
true
;
gddProviders.ComboBoxControl.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(
this
.gddProviders_SelectedIndexChanged);
}
}
private
void
gddProviders_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
GridEditableItem editedItem = (sender
as
RadComboBox).NamingContainer
as
GridEditableItem;
GridDropDownListColumnEditor gddFechas = editedItem.EditManager.GetColumnEditor(
"gddSelectFecha"
)
as
GridDropDownListColumnEditor;
DataTable ddFecha =
new
DataTable();
ddFecha.Columns.Add(
"Fechas"
);
ddFecha.Rows.Add(GetFechas(233,2));
gddFechas.DataSource = ddFecha;
gddFechas.DataBind();
gddFechas.ComboBoxControl.DataBind();
/*
RadComboBox gddFecha = editedItem["gddSelectFecha"].Controls[0] as RadComboBox;
*/
}
}
}
Any advice will be apreciated!