在ASP.net中我想在服务器端代码中动态的生成控件,比如生成Button按钮,也能让他们显示到页面上,但是如何让这些动态控件出现在页面的指定位置内,比如说据顶部的像素是多少多少,据左边缘的距离多少多少?如何在服务器端代码控制呢?小弟是初学者,今天老师刚讲到这儿,我突然想到这个问题的,还请各位高手前辈,多多指教啊!小弟万分感谢!

解决方案 »

  1.   

    设置button 的style
    Button bt = new Button();
    bt.Text = "";
    bt.Style.Add("position", "absolute");
    bt.Style.Add("left","");
    bt.Click += new EventHandler(bt_Click);
    this.Controls.Add(bt);
      

  2.   

    3楼正解,可参见这篇文章
    《ASP.NET页面中动态增加的控件、添加事件》
      

  3.   

    写css不是一定要看着UI写的,css不依赖于aspx存在,只要css写对了、关联上了,就能起作用。
    跟你的控件加载方式没有关系,
    给你举个例子:有这么个页面,几乎没有代码,控件是动态加载的:
    aspx:
    [code=HTML]
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Color.aspx.cs" Inherits="Color" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
        
          function pageLoad() {
          }
        
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="divBody">
            <ajaxToolkit:ToolkitScriptManager ID="Tsm1" runat="server"></ajaxToolkit:ToolkitScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
            <div class="Hidden">
                <Style:TextBoxPlus ID="txtMyRequest" runat="server"></Style:TextBoxPlus>
            </div>
          
            <div id="div_1_1" runat="server">
            
            </div>
            
            <div id="div_2_1" runat="server">
                
            </div>
            
            <div id="div_3_1" runat="server">
                
            </div>
            
            
            
            </ContentTemplate>
            <Triggers>
            </Triggers>
            </asp:UpdatePanel>
        </div>
        </form>
    </body>
    </html>/code]
      

  4.   

    写css不是一定要看着UI写的,css不依赖于aspx存在,只要css写对了、关联上了,就能起作用。
    跟你的控件加载方式没有关系,
    给你举个例子:有这么个页面,几乎没有代码,控件是动态加载的:
    aspx:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Color.aspx.cs" Inherits="Color" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
        
          function pageLoad() {
          }
        
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="divBody">
            <ajaxToolkit:ToolkitScriptManager ID="Tsm1" runat="server"></ajaxToolkit:ToolkitScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
            <div class="Hidden">
                <Style:TextBoxPlus ID="txtMyRequest" runat="server"></Style:TextBoxPlus>
            </div>
          
            <div id="div_1_1" runat="server">
            
            </div>
            
            <div id="div_2_1" runat="server">
                
            </div>
            
            <div id="div_3_1" runat="server">
                
            </div>
            
            
            
            </ContentTemplate>
            <Triggers>
            </Triggers>
            </asp:UpdatePanel>
        </div>
        </form>
    </body>
    </html>
      

  5.   

    注意,这个页面其实只定义了布局,数据无有,
    甚至你都看不到css的加载,因为css也是动态加载的,(方法写在我的博客里了),
    其实每个页面可以关联了一个同名的css,
    再看看css的内容#divBody{
        width:780px;
        }#div_1_1,#div_3_1{
        height:25px;
        line-height:25px;
        padding: 0 5px 0 5px;
        
        }#div_1_1 span{
        margin-left:5px;
        }#div_1_1 div{
        margin-top:-1px;
        }input[type="button"]{
        float:right;
        }
    #btnSearch{
        float:left;
        }
    #btnExport{
        width:60px;
        }