2012-04-24 120 views
1

我在表和一個按鈕。第一次加載頁面時,這個方法被調用,它完美的工作。當我按下'New Slot'按鈕並且調用這個方法時,我可以在調試過程中看到row.count增加了這個表,但是在瀏覽器中,一個新的不被渲染(所以情況並非如此也許一行會彈出另一行)。我在我的用戶界面中使用更新面板,但有或沒有它我有相同的效果。我也嘗試每次在這個方法中重新添加表,但只有1行是SHOWN/RENDERED,但是如果我在行中鍵入某些內容,然後再添加一行,那麼第一行中的內容會丟失,可能是行正在被添加和前一個被刪除?也許我必須使用視圖狀態?有人能指導我找到合適的解決方案嗎?動態添加行asp.net(在按鈕點擊) - 使用動態HTML - 行未顯示

private void AddSlot() 
     { 
      DropDownList ddlProfiles = new DropDownList(); 
      ddlProfiles.DataSource = DLProfiles.Instance.GetAllProfilesByGid(Int32.Parse(Session["gid"].ToString())); 
      ddlProfiles.DataTextField = "pName"; 
      ddlProfiles.DataBind(); 

      TableRow row = new TableRow(); 

      TableCell cellProfile = new TableCell(); 
      cellProfile.Controls.Add(ddlProfiles); 

      TableCell cellStart = new TableCell(); 
      TextBox startTime = new TextBox(); 
      cellStart.Controls.Add(startTime); 

      TableCell cellEnd = new TableCell(); 
      TextBox endTime = new TextBox(); 
      cellEnd.Controls.Add(endTime); 

      row.Cells.Add(cellProfile); 
      row.Cells.Add(cellStart); 
      row.Cells.Add(cellEnd); 

      scheduleTable.Rows.Add(row); 

     } 

<asp:UpdatePanel ID="pnlSchedTable" runat="server"> 
       <ContentTemplate> 
     <div id="divCurrentSchedule" runat="server"> 
      <h3 id="scheduleTitle" runat="server"> 
      </h3> 

        <asp:Table ID="scheduleTable" runat="server"> 
         <asp:TableHeaderRow ID="rowHeaders" runat="server"> 
          <asp:TableHeaderCell Text="Profile Name" /> 
          <asp:TableHeaderCell Text="Start time" /> 
          <asp:TableHeaderCell Text="End time" /> 
         </asp:TableHeaderRow> 
        </asp:Table> 
        <asp:Button ID="btnNewSlot" runat="server" OnClick="btnNewSlot_Click" Text="New Slot" /> 

     </div></ContentTemplate> 
      </asp:UpdatePanel> 

回答

1

什麼時候你打電話給AddSlot? 如果您希望它在任何頁面請求後運行,無論是初始加載還是按鈕單擊,都應該將其移至「預渲染」,然後調整您的計時問題。