本帖最后由 shengrl2007 于 2013-07-09 15:10:10 编辑

解决方案 »

  1.   

    贴上DynamicTable1的代码,Table2是个什么东西
      

  2.   

     /// <summary>
        /// 动态生成逻辑楼层table
        /// </summary>
        protected void DynamicTable2(int floor)
        {
            int I, J;
            for (I = 0; I < 1; I++)//6行
            {
                TableRow Row = new TableRow();
                for (J = 1; J < floor; J++)//4列
                {
                    TableCell Cell = new TableCell();
                    TextBox tb = new TextBox();
                    tb.Width = 18;
                    tb.ID = "tb2" + J.ToString();
                    //tb.Text = J.ToString() + "楼  ";
                    Cell.Controls.Add(tb);                Row.Cells.Add(Cell);
                }
                Table2.Rows.Add(Row);
            }    }
      

  3.   

      protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LogicFloor();
               
            } 
        }
        /// <summary>
        /// 动态生成物理楼层table
        /// </summary>
        protected void DynamicTable1(int floor)
        {
            int I, J;
            for (I = 0; I < 1; I++)//1行
            {
                TableRow Row = new TableRow();
                for (J = 1; J < floor; J++)//j列
                {
                    TableCell Cell = new TableCell();
                    TextBox tb = new TextBox();
                    tb.Width = 18;
                    //tb.Text = J.ToString() + "楼  ";
                    tb.Text = J.ToString();
                    Cell.Controls.Add(tb);
                    Row.Cells.Add(Cell);            }
                Table1.Rows.Add(Row);
            }    }
        /// <summary>
        /// 动态生成逻辑楼层table
        /// </summary>
        protected void DynamicTable2(int floor)
        {
            int I, J;
            for (I = 0; I < 1; I++)//6行
            {
                TableRow Row = new TableRow();
                for (J = 1; J < floor; J++)//4列
                {
                    TableCell Cell = new TableCell();
                    TextBox tb = new TextBox();
                    tb.Width = 18;
                    tb.ID = "tb2" + J.ToString();
                    //tb.Text = J.ToString() + "楼  ";
                    Cell.Controls.Add(tb);                Row.Cells.Add(Cell);
                }
                Table2.Rows.Add(Row);
            }    } 
        protected void drpFloor_SelectedIndexChanged(object sender, EventArgs e)
        {
            int drpFloor = int.Parse(this.drpFloor.SelectedValue);
            int drpFloor = int.Parse(this.drpFloor.SelectedValue);
            //ViewState["drpFloor"] = drpFloor.ToString();
            DynamicTable1(drpFloor + 1); 
            DynamicTable2(drpFloor + 1); 
            TextBox TempTextBox;
            TempTextBox = ((TextBox)Table2.FindControl("tb21"));
            TempTextBox.Text = "1";    }
         /// <summary>
        /// 确定操作按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnConfirm_Click(object sender, EventArgs e)
        {
             
            TextBox TempTextBox1;
            TempTextBox1 = ((TextBox)Table2.FindControl("tb21"));
            TempTextBox1.Text = "2";
        }
        /// <summary>
        /// 物理楼层最高值
        /// </summary>
        void LogicFloor()
        {
            ArrayList aList = new ArrayList();        for (int i = 7; i < 51; i++)
                aList.Add(i);
            drpFloor.DataSource = aList;
            drpFloor.DataBind();
        
        }
    把代码都贴上了,便于大家分析。
      

  4.   

     <tr>
                    <td>
                        物理最高楼层
                    </td>
                    <td>
                        <asp:DropDownList ID="drpFloor" runat="server" AutoPostBack="true" Width="150px"
                            OnSelectedIndexChanged="drpFloor_SelectedIndexChanged">
                        </asp:DropDownList>
                    </td>
                </tr><tr>
                    <td width="100px">
                        物理楼层
                    </td>
                    <td>
                        <asp:Table ID="Table1" runat="server">
                        </asp:Table>
                    </td>
                    <tr>
                        <td width="100px">
                            逻辑楼层
                        </td>
                        <td>
                            <asp:Table ID="Table2" runat="server">
                            </asp:Table>
                        </td>
                    </tr>
       </tr>
     //前台的比较简单   
      

  5.   

    你这个问题是因为table控件不能保存其状态的原因,之前你添加的TableRow,TableCell,在页面PostBack之后,这些会丢失掉的。也就是说需要在Postback之后重新创建才行,不像Textbox那样,输入了值之后就可以一直保存在VIEWSTATE里面。
      

  6.   

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
    LogicFloor();
    } int floor; if (!int.TryParse(this.drpFloor.SelectedValue, out floor)) {
    floor = 0;
    } if (floor > 0) {
    DynamicTable1(floor + 1);
    DynamicTable2(floor + 1);
    }
    }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void drpFloor_SelectedIndexChanged(object sender, EventArgs e) {
    //int drpFloor = int.Parse(this.drpFloor.SelectedValue);
    ////int drpFloor = int.Parse(this.drpFloor.SelectedValue);
    ////ViewState["drpFloor"] = drpFloor.ToString();
    //DynamicTable1(drpFloor + 1);
    //DynamicTable2(drpFloor + 1);
    //TextBox TempTextBox;
    //TempTextBox = ((TextBox)Table2.FindControl("tb21"));
    //TempTextBox.Text = "1";
    }改一下这连个事件处理方法