This is a migrated thread and some comments may be shown as answers.

RadGrid with multiple GridDropDownColumn and RadComboBox

3 Answers 179 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Rafael
Top achievements
Rank 1
Rafael asked on 07 Jun 2011, 04:28 PM
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.

<%@ 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!

3 Answers, 1 is accepted

Sort by
0
Rafael
Top achievements
Rank 1
answered on 08 Jun 2011, 08:07 PM
Anyone have any ideas?
0
Shinu
Top achievements
Rank 2
answered on 09 Jun 2011, 06:59 AM
Hello Rafael,

I guess the issue is because you have tried to access the wrong ComboBox inside grid in IremCreated event. Please make the following changes and try whether it works.

C#:
protected void grdCitasMasivas_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
   {
       if (e.Item is GridEditableItem && e.Item.IsInEditMode)
       {
           GridDropDownListColumnEditor gddProviders = (e.Item as GridEditableItem).EditManager.GetColumnEditor("gddProveedor") as GridDropDownListColumnEditor;
           gddProviders.ComboBoxControl.AutoPostBack = true;
           gddProviders.ComboBoxControl.SelectedIndexChanged += new RadComboBoxSelectedIndexChangedEventHandler(gddProviders_SelectedIndexChanged);
       }
   }
 
   void gddProviders_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
   {
 
   }

-Shinu.
0
Rafael
Top achievements
Rank 1
answered on 09 Jun 2011, 04:48 PM
Thanks for the reply, I had changed that intentionally while testing and forgot to set it back. It does not work either way.

While Debbuging i did notice that it never goes in grdCitasMasivas_ItemCreated when its loading.
Tags
Grid
Asked by
Rafael
Top achievements
Rank 1
Answers by
Rafael
Top achievements
Rank 1
Shinu
Top achievements
Rank 2
Share this question
or