Syf AK Ответов: 1

Как добавить radcontrols в динамическую созданную таблицу


Я создал динамические элементы управления rad, которые состоят из(textbox, ddl, combobox и т. д.), а также создал динамические rad wizardsteps, каждый wizardstep содержит динамическую таблицу.

Я хочу вставить эти динамические элементы управления rad в таблицу wizardstep, чтобы достичь этого, я использовал сеансы, но его исключение говорит, что элементы управления скриптами не могут быть зарегистрированы после Пререндера..

Когда я попытался вставить эти элементы управления в статическую таблицу asp, она работает нормально, а при добавлении в динамическую таблицу я получаю эту проблему. Что я сделал не так, как я могу решить этот вопрос.

Пожалуйста, направьте меня, я совсем новичок в программировании.

Что я уже пробовал:

   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) / 2);
       return ((reqstr.Length - reqstr.Replace(substr, "").Length) / substr.Length);
   }

Gerry Schmitz

ГАДЮКА.Нэт, я не такая умная; что богатый клиент (например в WPF)