2013-05-28 4 views
1

나는이있다 :테이블 셀에 행을 추가하는 방법 dynamicaly

  TableRow row = new TableRow(); 

      TableCell c1 = new TableCell(); 
      c1.Controls.Add(new TextBox()); 

      TableCell c2 = new TableCell(); 
      c2.Controls.Add(new DropDownList()); 

      row.Cells.Add(c1); 
      row.Cells.Add(c2); 

      this.tbl_Items.Rows.Add(row); 

그리고이 작품 : PageLoad()에서

<asp:Table id="tbl_Items" runat="server"> 
</asp:Table> 
<asp:Button ID="btn_AddNewItemField" runat="server" Text="Add New Item" 
    onclick="btn_AddNewItemField_Click" /> 

내가 하나 개의 행을 추가합니다.
그러나 버튼을 클릭하여 새 행을 추가 할 때이 코드를 코드과 코드없이 실행하지만 아무런 변화가 없습니다. 오류 없음, 행 없음, 아무 것도 없음. 내가 뭘 잘못하고 있니?

+0

있어 ..? – yogi

+0

죄송합니다. – 1110

답변

1

당신이 필요로하는 것은 약간의 국가 관리는이

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
      AddRow(true); 
     else 
      AddRows(); 
    } 
    protected void btn_AddNewItemField_Click(object sender, EventArgs e) 
    { 
     AddRow(true); 
    } 
    void AddRow(bool addCounter) 
    { 
     TableRow row = new TableRow(); 

     TableCell c1 = new TableCell(); 
     c1.Controls.Add(new TextBox()); 

     TableCell c2 = new TableCell(); 
     c2.Controls.Add(new DropDownList()); 

     row.Cells.Add(c1); 
     row.Cells.Add(c2); 

     this.tbl_Items.Rows.Add(row); 

     if (addCounter) 
     { 
      if (ViewState["rowCount"] == null) 
       ViewState["rowCount"] = 1; 
      else 
      { 
       int count = ((int)ViewState["rowCount"]); 
       ViewState["rowCount"] = ++count; 
      } 
     } 
    } 
    void AddRows() 
    { 
     if (ViewState["rowCount"] == null) 
      return; 
     int count = ((int)ViewState["rowCount"]); 
     for (int i = 1; i <= count; i++) 
     { 
      AddRow(false); 
     } 
    } 
+0

문제가 해결되면 문제가 해결됩니다. – 1110

0

편집 : 위치에 아무런 변화가 없습니다. 다른 오류가 있다고 생각합니다. 이 (이 나를 위해 작동) 시도 :

<asp:Table id="tbl_Items" runat="server"></asp:Table> 
<asp:Button ID="btn_AddNewItemField" runat="server" Text="Add New Item" /> 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     TableRow row = new TableRow(); 

     TableCell c1 = new TableCell(); 
     c1.Controls.Add(new TextBox()); 

     TableCell c2 = new TableCell(); 
     c2.Controls.Add(new DropDownList()); 

     row.Cells.Add(c1); 
     row.Cells.Add(c2); 

     this.tbl_Items.Rows.Add(row); 

     btn_AddNewItemField.Click += new EventHandler(btnAddNewItemFieldClick); 
    } 

    void btnAddNewItemFieldClick(object sender, EventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
+0

Nope은 여전히 ​​동일합니다. – 1110

0

"를 Page_Load"의 코드가 무엇을하려고 입니까? 이것은 "포스트 백"문제로 인한 것일 수 있습니다. 한 지점은 버튼을 클릭하면 코드가 "를 Page_Load"기능 재설정에 반환에서 ..

는 "(! IsPostBack을) {} 경우"귀하를 Page_Load 함수에서 피하기 위해 문제가있는 코드를 포함하려고 노력했다. 이 같은

는 tbl_Tokens``무엇

Public void Page_Load() 
{ 
    if(!IsPostBack) 
    { 

     //....Your code 
    } 

} 
관련 문제