Dropdownlist control not find in Dynamic RadGrid

5 posts, 0 answers
  1. Mohan
    Mohan avatar
    17 posts
    Member since:
    Jun 2012

    Posted 30 Jun 2012 Link to this post

    Team,

    In my scenario, I have an autogenerated Radgrid control to bind two Bound columns and remaining columns are Dropdown list. The bound and dropdown list control is binded in Grid. But when I try to get the value from the Dropdown list, I can't able to get the control Id (even i used FindControl).

    IN ASPX
    ----------
     <telerik:RadGrid ID="dgPassanger" runat="server" AllowSorting="true" Visible="true"
                                                PageSize="5" AllowPaging="true" AllowFilteringByColumn="true" PagerStyle-AlwaysVisible="true"
                                                OnItemDataBound="Passenger_ItemDataBound" Width="715px">
                                                <MasterTableView CommandItemDisplay="None" AllowFilteringByColumn="false" AutoGenerateColumns="true">
                                                    <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" />
                                                </MasterTableView>
                                                <ClientSettings>
                                                    <Scrolling AllowScroll="true" />
                                                    <Selecting AllowRowSelect="true" />
                                                </ClientSettings>
                                            </telerik:RadGrid>

    IN ASPX.CS
    ---------------
            protected void PreparePaxGrid(List<Passenger> PaxList)
            {
                DataTable pivotedList = new DataTable();
                try
                {
                    if (Session["PostflightTrip"] != null)
                    {
                        TripLog = (PostflightTrip)Session["PostflightTrip"];

                        // Adding Dynamic Columns
                        GridBoundColumn boundColumn;
                        GridTemplateColumn templateColumn;
     
                        boundColumn = new GridBoundColumn();
                        boundColumn.DataField = "PaxCode";
                        boundColumn.HeaderText = "Pax Code";
                        dgPassanger.MasterTableView.Columns.Add(boundColumn);

                        boundColumn = new GridBoundColumn();
                        boundColumn.DataField = "PaxName";
                        boundColumn.HeaderText = "Pax Name";
                        dgPassanger.MasterTableView.Columns.Add(boundColumn);

                        foreach (var item in TripLog.TripLegs)
                        {

                            templateColumn = new GridTemplateColumn();
                            templateColumn.HeaderText = item.POLegsDescription;
                            templateColumn.ItemTemplate = new GridTemplate(item.LegID); // Bind Dropdown List
                            templateColumn.UniqueName = "FlightPurpose";

                            dgPassanger.MasterTableView.Columns.Add(templateColumn);
                        }

                        // Bind List into Grid
                        dgPassanger.DataSource = PaxLegList;
                        dgPassanger.DataBind();

                    }
                }
                catch (Exception ex) { }
            }

            private class GridTemplate : ITemplate
            {
                protected DropDownList ddList;
                private int _legId = 0;

                public GridTemplate(int legId)
                {
                    _legId = legId;
                }

                public void InstantiateIn(System.Web.UI.Control container)
                {
                    ddList = new DropDownList();
                    ddList.ID = "ddlFP" +_legId.ToString();
                    ddList.DataBinding += new EventHandler(ddList_DataBinding);
                    container.Controls.Add(ddList);
                }

                protected void ddList_DataBinding(object sender, EventArgs e)
                {
                    DropDownList dl = (DropDownList)sender;
                    GridDataItem container = (GridDataItem)dl.NamingContainer;
                    dl.Items.Add(new ListItem("1","1"));
                    dl.Items.Add(new ListItem("2", "2"));
                    //dl.AutoPostBack = true;
                    //dl.SelectedIndexChanged += new EventHandler(DisplayDDList_IndexChanged);
                }
            }

    For Retrieving Value from Dropdown, I used the below code
     foreach (GridDataItem Item in grid.MasterTableView.Items)
                    {

                        DropDownList ddlFlightPurpose = (DropDownList)Item["FlightPurpose"].FindControl("ddlFP1");

    }

    ISSUE: Every time it shows the NULL value.

    Please resolve as soon as possible.
  2. Jayesh Goyani
    Jayesh Goyani avatar
    2732 posts
    Member since:
    May 2010

    Posted 30 Jun 2012 Link to this post

    Hello,

    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
    </telerik:RadScriptManager>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    </telerik:RadAjaxManager>
    <telerik:RadWindowManager ID="RadWindowManager1" runat="server">
    </telerik:RadWindowManager>
    <telerik:RadGrid ID="dgPassanger" runat="server" AllowSorting="true" Visible="true" AutoGenerateColumns="false"
        PageSize="5" AllowPaging="true" AllowFilteringByColumn="true" PagerStyle-AlwaysVisible="true"
         Width="715px" onitemdatabound="dgPassanger_ItemDataBound">
        <MasterTableView CommandItemDisplay="None" AllowFilteringByColumn="false" AutoGenerateColumns="true">
            <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" />
        </MasterTableView>
        <ClientSettings>
            <Scrolling AllowScroll="true" />
            <Selecting AllowRowSelect="true" />
        </ClientSettings>
    </telerik:RadGrid>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Get the dropdown column" onclick="Button1_Click" />


      protected void Page_Init(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("ID", typeof(Int32));
                dt.Columns.Add("Name", typeof(string));
                dt.Rows.Add(1, "Name1");
                dt.Rows.Add(2, "Name2");
     
                dynamic data = new[] {
                  new { ID = 1, Name ="name1"},
                  new { ID = 2, Name = "name2"},
                  new { ID = 3, Name = "name3"},
                  new { ID = 4, Name = "Name4"},
                   new { ID = 5, Name ="name5"}
                };
     
                PreparePaxGrid(data, dt);
            }
            protected void Page_Load(object sender, EventArgs e)
            {
                 
            }
     
            protected void dgPassanger_ItemDataBound(object sender, GridItemEventArgs e)
            {
     
            }
     
            protected void PreparePaxGrid(dynamic data, DataTable dt)
            {
     
                try
                {
     
                    // Adding Dynamic Columns
                    GridBoundColumn boundColumn;
                    GridTemplateColumn templateColumn;
     
                    boundColumn = new GridBoundColumn();
                    boundColumn.DataField = "ID";
                    boundColumn.HeaderText = "ID from dyanamic";
                    dgPassanger.MasterTableView.Columns.Add(boundColumn);
     
                    boundColumn = new GridBoundColumn();
                    boundColumn.DataField = "Name";
                    boundColumn.HeaderText = "Name from dyanamic";
                    dgPassanger.MasterTableView.Columns.Add(boundColumn);
     
     
                    for (int i = 0; i < 2; i++)
                    {
     
                        templateColumn = new GridTemplateColumn();
                        templateColumn.HeaderText = "ID " + i.ToString();
                        templateColumn.ItemTemplate = new GridTemplate(i); // Bind Dropdown List
                        templateColumn.UniqueName = "FlightPurpose" + i;
     
                        dgPassanger.MasterTableView.Columns.Add(templateColumn);
                    }
                    dgPassanger.MasterTableView.AutoGenerateColumns = false;
                    dgPassanger.DataSource = data;
                    dgPassanger.DataBind();
     
     
                }
                catch (Exception ex)
                {
     
                }
            }
     
            private class GridTemplate : ITemplate
            {
                protected DropDownList ddList;
                private int _legId = 0;
     
                public GridTemplate(int legId)
                {
                    _legId = legId;
                }
     
                public void InstantiateIn(System.Web.UI.Control container)
                {
                    ddList = new DropDownList();
                    ddList.ID = "ddlFP" + _legId.ToString();
                    ddList.DataBinding += new EventHandler(ddList_DataBinding);
                    container.Controls.Add(ddList);
                }
     
                protected void ddList_DataBinding(object sender, EventArgs e)
                {
                    DropDownList dl = (DropDownList)sender;
                    GridDataItem container = (GridDataItem)dl.NamingContainer;
                    dl.Items.Add(new ListItem("1", "1"));
                    dl.Items.Add(new ListItem("2", "2"));
                    //dl.AutoPostBack = true;
                    //dl.SelectedIndexChanged += new EventHandler(DisplayDDList_IndexChanged);
                }
            }
     
            protected void Button1_Click(object sender, EventArgs e)
            {
                foreach (GridDataItem item in dgPassanger.MasterTableView.Items)
                {
                    for (int i = 0; i < 2; i++)
                    {
                        DropDownList ddl = item.FindControl("ddlFP" + i.ToString()) as DropDownList;
    // access your DropDownList here
                    }
                }
            }


    Thanks,
    Jayesh Goyani
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Mohan
    Mohan avatar
    17 posts
    Member since:
    Jun 2012

    Posted 30 Jun 2012 Link to this post

    Jayesh,

    Thanks for your reply, I am still can't able to retrieve the value from Drop down list, Please check the screen shot.

    Addl info, when I check the view source, it's look like below.

    <div id="ctl00_ctl00_MainContent_PostFlightBodyContent_ctl00_ctl00_MainContent_PostFlightBodyContent_dgPassangerPanel">
    <div id="ctl00_ctl00_MainContent_PostFlightBodyContent_dgPassanger" class="RadGrid RadGrid_Office2010Silver" style="width:715px;">
    <input id="ctl00_ctl00_MainContent_PostFlightBodyContent_dgPassanger_ClientState" name="ctl00_ctl00_MainContent_PostFlightBodyContent_dgPassanger_ClientState" type="hidden" />
    </div>





    Thanks
    Mohan
  5. Mohan
    Mohan avatar
    17 posts
    Member since:
    Jun 2012

    Posted 01 Jul 2012 Link to this post

    Dynamic Grid  binded in the Nested master page, in the page i used ajax settings like below:

                                <telerik:AjaxSetting AjaxControlID="dgPassanger">
                                    <UpdatedControls>
                                        <telerik:AjaxUpdatedControl ControlID="dgPassanger" LoadingPanelID="RadAjaxLoadingPanel1" />
                                    </UpdatedControls>
                                </telerik:AjaxSetting>
                                <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
                                    <UpdatedControls>
                                        <telerik:AjaxUpdatedControl ControlID="dgPassanger" LoadingPanelID="RadAjaxLoadingPanel1" />
                                    </UpdatedControls>
                                </telerik:AjaxSetting>
  6. Gajanan
    Gajanan  avatar
    49 posts
    Member since:
    May 2010

    Posted 17 Aug 2015 in reply to Jayesh Goyani Link to this post

    Hil,
    My requirement is Bind the grid dynamic , and add the controls like Text Box And rad Como box at run time by Item value.
    so far have done the control adding and now my grid is ready to take values from user , 
    but when user selected value from rad combo box (dynamic added control in grid), and click the save button i cannot find the Rad Combo box 
    pls suggest me the way how to get the values for dynamically added controls in Rad-grid on button click.
    below are the steps i followed
    1. Added Grid in Aspx. with Autogenerated Column = true
    2. On Item created event added dynamic controls in Grid. 
    3. bind the data to ad combo box (dynamic added control in grid) 
    4. on save Button i have to save the selected values from rad combo box (dynamic added control in grid), to data base
    in above step 1 to 3 are done , but step 4 making me trouble .

    below is code for button click.
    protected void btnSaveAll_Click(object sender, EventArgs e)
    {
        Questionnaire MyQue = Questionnaire.getQuestionnaire(mQuestionnaireid); 
        ArrayList ColumnLst = GetColumnList();
                    Dictionary<string,string> RowSplitValue = new Dictionary<string,string>();
                    foreach (GridEditableItem Item in rgPivotQuestionnaireResult.MasterTableView.Items)
                    {
                        foreach (GridColumn Column in rgPivotQuestionnaireResult.MasterTableView.RenderColumns)
                        {
                            if (ColumnLst.Contains(Column.UniqueName))
                            {
                                //RowSplitValue = new Dictionary<string, string>(Item.SavedOldValues[Column.UniqueName]);
                                if (Item[Column].Controls.Count > 0)
                                {
                                    Control ItemControle= new Control();
                                    ItemControle = Item[Column].Controls[0];
                                    if (ItemControle is TextBox)
                                    {
                                        TextBox TxtBx = (TextBox)Item[Column].Controls[0];
                                    }
                                    if (Item[Column].Controls.Count > 1)
                                    {
                                        ItemControle = Item[Column].Controls[1];
                                        if (ItemControle is RadComboBox)
                                        {
                                            RadComboBox RCB = (RadComboBox)Item[Column].Controls[1];
                                              MyQue .Answervalue = RCB.SelectedValue;
                                        }
                                    }
                                }
                            }
                        }
                    }
       MyQue .Save();
    }
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017