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!