2012-04-24 88 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? 如果您希望它在任何页面请求后运行,无论是初始加载还是按钮单击,都应该将其移至“预渲染”,然后调整您的计时问题。