2014-11-19 1 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 컨트롤이있는 새 테이블을 만들고 드롭 다운 목록에 채워진 데이터를 저장하려는 버튼을 클릭하여 저장하고 싶습니다. 테이블에. FindControl에서 Object 참조가 객체의 인스턴스로 설정되지 않는다는 오류가 표시됩니다. 동적으로 생성 된 컨트롤은 다시 게시 후 플러시 수 있기 때문에여러 개의 드롭 다운 목록이있는 동적 양식에서 데이터 가져 오기

답변

0


는이 오류에 직면하고있다.
다시 사용할 수 있도록 만들거나 다른 방법으로 사용할 수 있습니다.
예를 들어, 버튼 클릭시 javascript에서 드롭 다운 목록에 액세스하고 js에서 사용하십시오. 숨겨진 필드에 그 결과를 저장할 수 있습니다. 숨겨진 필드는 코드 뒤에서 사용할 수 있습니다.

다음 링크를 확인하십시오 : http://www.learning2code.net/Learn/2009/8/12/Adding-Controls-to-an-ASPNET-form-Dynamically.aspx

관련 문제