发现一个新的问题
当panel放在table中的话,那么动态添加的控件的left和top属性就不是
相对panel来说的了,而是table那么如何在table中动态添加控件呢?
或者如何是动态添加的控件的left和top属性相对panel?求救!!!!!!!!!

解决方案 »

  1.   

    htmltable中添加:  table.rows[i].cells[j].controls.add(control)
    webform table也应该差不多吧。我没试过
      

  2.   

    try:
    newTbx.Style["POSITION"]="relative";
      

  3.   

    try:
    newTbx.Style["POSITION"]="relative";
      

  4.   

    往table的一个单元格添加也不行。
    总是不能按照要求排列使用relative也不行,很乱,排列无序总之都不行乱七八糟的,出现的问题多了烦阿。那个大侠有过成功的例子,指点一下吧
      

  5.   

    这是我的程序的一部分,我在Page_Load()中要调用CreateControls方法请问哪里存在着错误?谢谢各位!private void CreateControls(int typeID)
    {

    Label newLbl;
    TextBox newTbx; Admin admin=new Admin();//Admin.cs是我写的一个Class,主要 
                是负责数据库操作的 int wd=Int32.Parse(MyTable.Rows[0].Cells[0].Width)+Int32.Parse(MyTable.Rows[1].Cells[0].Width);
             
    int ht=Int32.Parse(MyTable.Rows[0].Cells[1].Height)+24;
             //wd和ht是我把要添加的控件定位的坐标,这个坐标在表格的单元
             个中 SqlDataReader readTbx=admin.GetTextBoxs(typeID);
             //admin在上面已经实例化,Admin.cs中有个方法GetTextBoxs,他传
               回SqlDataReader,读取的是TextBox的属性 while (readTbx.Read())
    {
    newTbx=new TextBox();
    int tmp;
    newTbx.ID=readTbx.GetInt32(0).ToString(); tmp=readTbx.GetInt32(1)+wd;
    newTbx.Style["LEFT"]=tmp.ToString()+"px";

    tmp=readTbx.GetInt32(2)+ht;
    newTbx.Style["TOP"]=tmp.ToString()+"px"; newTbx.Style["POSITION"]="absolute";
    newTbx.Width=readTbx.GetInt32(3);
    newTbx.Height=readTbx.GetInt32(4);
    newTbx.Style["Font-Names"]=readTbx.GetString(5);
    newTbx.Style["Font-Size"]=readTbx.GetInt32(6).ToString()+"pt";
    newTbx.Style["ForeColor"]=readTbx.GetString(7); //我分别用如下三种方法添加,效果一样
    //this.MyPanel.Controls.Add(newTbx);
    Page.Controls[1].Controls.Add(newTbx);
    //MyTable.Rows[1].Cells[1].Controls.Add(newTbx);
    }
    //如下是添加Label,同上
    SqlDataReader readLbl=admin.GetLabels(typeID); while (readLbl.Read())
    {
    newLbl=new Label();
    int tmp; tmp=readLbl.GetInt32(0)+wd;
    newLbl.Style["LEFT"]=tmp.ToString()+"px";

    tmp=readLbl.GetInt32(1)+ht;
    newLbl.Style["TOP"]=tmp.ToString()+"px"; newLbl.Style["POSITION"]="absolute";
    newLbl.Width=readLbl.GetInt32(2);
    newLbl.Height=readLbl.GetInt32(3);
    newLbl.Text=readLbl.GetString(4);
    newLbl.Style["Font-Names"]=readLbl.GetString(5);
    newLbl.Style["Font-Size"]=readLbl.GetInt32(6).ToString()+"pt";
    newLbl.Style["ForeColor"]=readLbl.GetString(7); //this.MyPanel.Controls.Add(newLbl);
    //MyTable.Rows[1].Cells[1].Controls.Add(newLbl);
    Page.Controls[1].Controls.Add(newLbl);
    }
    }
      

  6.   

    newLbl.Style["POSITION"]="absolute";  try
    ="relative"
      

  7.   

    还是不行
    不能把Panel设置动态生成的Textbox和Label的容器排列是乱的
      

  8.   

    用另外的方法搞定了:在表格的相应单元格中,也就是要动态生成webform的位置,
    添加这个控件:System.Web.UI.WebControls.Literal然后给他的text属性赋值:
    MyLiteral.Text="<iframe marginheight=0 marginwidth=1 frameborder=0 width=100% height=100% scrolling=Yes src=./ShowCreate.aspx?strQuery="+strQuery+"&fileid="+e.Item.Cells[1].Text.ToString()+"></iframe>";搞定!!!!!谢谢各位!!