2014-11-19 2 views
0
private void createnewTable(int ts,int sid) 
{ 
    SubjectClass s1 = new SubjectClass(); 
    List<string> sub = new List<string>(); 
    sub = s1.returnSubjectList(sid); 

    Table timetable = new Table(); 
    int height = 20; 
    Panel1.Attributes.Add("style", "height:" + height.ToString() + "px;"); 
    for (int i = 1; i <= ts; i++) 
    { 
     height = height + 20; 
     TableRow tr = new TableRow(); 
     TableCell td1 = new TableCell(); 
     Label lbl = new Label(); 
     lbl.Text = "Lecture" + (i).ToString(); 
     td1.Controls.Add(lbl); 
     tr.Controls.Add(td1); 
     for (int j = 1; j <= 6; j++) 
     { 
      TableCell td2 = new TableCell(); 
      DropDownList drop_sub = new DropDownList(); 
      drop_sub.ID = "drop" + i.ToString() + j.ToString(); 
      foreach (string s in sub) 
      { 
       drop_sub.Items.Add(s.ToString()); 
      } 
      drop_sub.Items.Add("No lecture"); 
      td2.Controls.Add(drop_sub); 
      tr.Controls.Add(td2); 
      Panel1.Attributes.Add("style", "height:" + height.ToString() + "px;"); 

     } 

     timetable.Controls.Add(tr); 

    } 
    panel_timetable.Controls.Add(timetable); 
} 
protected void btn_save_Click(object sender, EventArgs e) 
{ 
    int totsub = int.Parse(Session["ts"].ToString()); 
    Session["ts"] = null; 
    List<string> sub = new List<string>(); 
    for (int i = 1; i <= totsub; i++) 
    { 
     for (int j = 1; j <= 6; j++) 
     { 
      DropDownList drop = new DropDownList(); 
      drop = (DropDownList)(panel_timetable.FindControl("drop"+i.ToString()+j.ToString()));//here error that Object reference      //not set to an instance of an object. 
      string str = drop.SelectedValue; 
      sub.Add(str); 
     } 
    } 
} 

В приведенном выше коде, я хотел бы создать новую таблицу, которая оказывает несколько элементов управления DropDownList и на кнопку щелчку сохранить Я хотел бы сохранить заполненные данные в DropDownList к таблице. В FindControl отображается сообщение об ошибке, если ссылка объекта не установлена ​​в экземпляр объекта.Выборка данных из динамической формы, имеющие несколько DropDownList

ответ

0


Вы столкнулись с этой ошибкой, потому что динамически создаваемые элементы управления сбрасываться после обратной передачи.
Вам необходимо заново создать их, чтобы сделать их доступными, или вы можете использовать альтернативный способ.
Например, перейдите в раскрывающийся список из javascript при нажатии кнопки и используйте его в js. Вы можете сохранить его результат в скрытом поле, которое будет доступно в коде.

Проверьте эту ссылку: http://www.learning2code.net/Learn/2009/8/12/Adding-Controls-to-an-ASPNET-form-Dynamically.aspx

Смежные вопросы