How to add RadControls to dynamic created table

1 posts, 0 answers
  1. Saif
    Saif avatar
    4 posts
    Member since:
    Jan 2019

    Posted 23 Jan 2019 Link to this post

    I had created rad dynamic controls which consists of(textbox, ddl, combobox etc..) and also created dynamic rad wizardsteps, every wizardstep contains a dynamic table.

    I want insert those dynamic rad controls into wizardstep table, to achieve this i used sessions but its giving a exception says Script controls may not be registered after PreRender..

    When i tried to insert these controls in static asp table it works fine, while adding to a dynamic table i am getting this issue. What i had done wrong, how can i resolve this issue.

    Please guide me i am new to telerik controls.

     

    Code Behind: 

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GenerateWizardSteps(2);
            RadListView1.DataSource = GetDatatable();
            RadListView1.DataBind();
        }
        else
        {
            RecreateControls("rtb", "RadTextBox");
        }
    }
    public DataTable GetDatatable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Label");
     
        dt.Rows.Add("RadTextBox");
        dt.Rows.Add("RadComboBox");
        dt.Rows.Add("RadDateTimePicker");
        dt.Rows.Add("RadDropDownList");
        dt.Rows.Add("RadDatePicker");
        dt.Rows.Add("RadNumericTextBox");
        dt.Rows.Add("RadToggleButton");
        dt.Rows.Add("RadBinaryImage");
        return dt;
    }
     
    //Creating WizardSteps
    public void GenerateWizardSteps(int formID)
    {
        RadWizardStep step;
     
        step = new RadWizardStep();
        step.ClientIDMode = ClientIDMode.Static;
        step.ID = "step_" + i.ToString();
        controlTbl = new Table();
        controlTbl.ClientIDMode = ClientIDMode.Static;
        controlTbl.ID = "controlTable_" + i.ToString();
        Session["myTable"] = controlTbl;
        step.Controls.Add(controlTbl);
        wizardControl.WizardSteps.Add(step);
     }
    protected void RadAjaxManager1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
    {
        string commandText = e.Argument.ToString().Trim();
        string[] splitdata = commandText.Split('&');
        commandText = splitdata[0];
        string controlName = splitdata[1];
        switch (controlName)
        {
            case "RadTextBox":
                int cnt1 = FindOccurence("rtb") + 1;
                DynamicControls dcTextBox = new DynamicControls();
                TableCell txtlblRad = dcTextBox.Controlscreation("RadLabel", "", cnt1, cnt1, "Text Box:", "", 0);
                TableCell txtRad = dcTextBox.Controlscreation("RadTextBox", "", cnt1, cnt1, "", "", 0);
                TableRow txtRow = new TableRow();
                txtRow.Cells.Add(txtlblRad);
                txtRow.Cells.Add(txtRad);
                Table controlTbl = Session["myTable"] as Table;
                controlTbl.Rows.Add(txtRow);
                //Table1.Rows.Add(txtRow);
     
                break;
         }
    }
    private void RecreateControls(string ctrlPrefix, string ctrlType)
    {
        string[] ctrls = Request.Form.ToString().Split('&');
        int cnt = FindOccurence(ctrlPrefix);
        if (cnt > 0)
        {
            for (int k = 1; k <= cnt; k++)
            {
                for (int i = 0; i < ctrls.Length; i++)
                {
                    if (ctrls[i].Contains(ctrlPrefix + "_" + k.ToString()))
                    {
     
                        if (ctrlType == "RadTextBox")
                        {
                            DynamicControls dcTextBox = new DynamicControls();
                            TableCell txtlblRad = dcTextBox.Controlscreation("RadLabel", "", k, k, "TextBox:", "", 0);
                            TableCell txtRad = dcTextBox.Controlscreation("RadTextBox", "", k, k, "", "", 0);
                            TableRow txtRow = new TableRow();
                            txtRow.Cells.Add(txtlblRad);
                            txtRow.Cells.Add(txtRad);
                            Table controlTbl = Session["myTable"] as Table;
                            controlTbl.Rows.Add(txtRow);
                        }
                           break;
                    }
                }
            }
        }
    }
     
    private int FindOccurence(string substr)
    {
        string reqstr = Request.Form.ToString();
        return ((reqstr.Length - reqstr.Replace(substr, "").Length) / substr.Length);
    }

     

Back to Top