C# 以编程方式添加控件

C# 以编程方式添加控件,c#,asp.net,C#,Asp.net,我正在创建ASP.NET wep页面。我有一张世界地图,我想在C#中添加一些图像按钮(城市)控件。我的方法是: 我使用存储过程从数据库中获取数据,但当我将下一个城市添加到该过程中时,先前添加的imagebutton会更改其位置 private void LocateCities() { IDBManager dbManager = new DBManager(DataProvider.SqlServer); dbManager.ConnectionString = @"Data Source=s

我正在创建ASP.NET wep页面。我有一张世界地图,我想在C#中添加一些图像按钮(城市)控件。我的方法是:

我使用存储过程从数据库中获取数据,但当我将下一个城市添加到该过程中时,先前添加的imagebutton会更改其位置

private void LocateCities()
{
IDBManager dbManager = new DBManager(DataProvider.SqlServer);
dbManager.ConnectionString = @"Data Source=server; Initial Catalog=db;  Integrated Security = SSPI;";
try
{
    dbManager.Open();
    dbManager.CreateParameters(2);
    dbManager.AddParameters(0, "@Function", "All");
    dbManager.AddParameters(1, "@Team", "All");
    DataSet ds = new DataSet("Stuff");
    ds = dbManager.ExecuteDataSet(CommandType.StoredProcedure, "sp_select_staff_and_cities");                    

    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        int xaxis = Convert.ToInt32(dr["xaxis"]) ;
        int yaxis = Convert.ToInt32(dr["yaxis"]) ;
        int textxaxis = xaxis + 30;
        int textyaxis = yaxis - 10;

        ImageButton btnCity = new ImageButton();
        btnCity.ImageUrl = "~/Images/cyanball1.gif";
        btnCity.Height = 10;
        btnCity.Attributes.Add("style", "Z-INDEX:100; POSITION:relative; left:" + xaxis + "px; TOP:" + yaxis + "px; Left:10px;Right:10px");

        Label lblCity = new Label();
        lblCity.Text = dr["city"].ToString();
        lblCity.Attributes.Add("style", "Z-INDEX: 100;POSITION:relative; left:" + textxaxis + "px; TOP:" + textyaxis + "px");

        PanelMap.Controls.Add(lblCity);
        PanelMap.Controls.Add(btnCity);    
    }
}
catch (Exception ex)
{
    Response.Write(ex.ToString());
}
finally
{
    dbManager.Dispose();
}
}
我正在使用面板将图像与地图一起保存: .专题小组图 { 宽度:960px; 高度:572像素; 文本对齐:左对齐; }

在上面的代码中应该修改什么来保持点的位置


我尝试使用position:absolute,但这会导致posiotion是相对于页面派生的,我希望它是相对于面板控件派生的。

问题是,position:absolute,所以在这两行上都改为
position:absolute
,这样就好了。

问题是,
POSITION:relative
,所以在这两行上都改为
POSITION:absolute
,这样你就很好了。

你可以将图像按钮和标签包装在一个html分区中。去掉高度和定位的内容,它应该在添加元素时流动。Jay,你能更具体一点吗?提前感谢。基本上删除样式属性,删除面板上的高规格,然后使用
System.Web.UI.HtmlControls.HtmlGenericControl(“div”)
作为标签和按钮的包装,您可以将图像按钮和标签包装在html div中。去掉高度和定位的内容,它应该在添加元素时流动。Jay,您能更具体一点吗?提前谢谢。基本上删除您的样式属性,删除面板上的高规格,并使用
System.Web.UI.HtmlControls.HtmlGenericControl(“div”)
作为标签和按钮的包装。我使用的位置:绝对,尽管我想避免这种情况。Thaks@user2027004,谢谢,我很高兴能帮上忙。请考虑投票和标记它作为答案。我有另一个问题-当我使用绝对位置,我有一些隐藏的形式,它不互相工作,因为当隐藏的形式出现,图像按钮不在正确的地方。有什么办法可以修复这个问题吗?@user2027004,听起来很复杂。请用这些信息发布另一个问题-并且要非常详细,因为现在您处理的是动态HTML,很难在线调试。我使用了POSITION:absolute,尽管我想避免这种情况。Thaks@user2027004,谢谢,我很高兴能帮上忙。请考虑投票和标记它作为答案。我有另一个问题-当我使用绝对位置,我有一些隐藏的形式,它不互相工作,因为当隐藏的形式出现,图像按钮不在正确的地方。有什么办法可以修复这个问题吗?@user2027004,听起来很复杂。请用这些信息发布另一个问题-并且要非常详细,因为现在您处理的是动态HTML,很难在线调试。