2013-06-10 3 views
1

Я создаю страницу ASP.NET для wep. У меня есть карта мира, и я хочу добавить элементы управления изображениями (городов) на C#. Я сделал метод:Добавление элементов управления программно

Я использую хранимую процедуру для получения данных из базы данных, но когда я добавляю следующий город к процедуре, добавленная ранее кнопка изменения изображения меняет свое положение.

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(); 
} 
} 

Я использую панель, чтобы сохранить изображение с картой: .PanelMap { ширина: 960px; высота: 572px; text-align: слева; }

Что следует изменить в приведенном выше коде, чтобы сохранить точки на своем месте?

Я попытался использовать положение: абсолютное, но это вызывает то, что позиционирование происходит относительно страницы, и я бы хотел, чтобы он был получен относительно элемента управления панели.

+0

вы можете обернуть ваши кнопки изображения и метку в div html. Избавьтесь от высоты и позиционирования материала, и он должен просто течь, когда вы добавляете в него элементы. – Jay

+0

Джей, не могли бы вы быть более конкретными? Заранее спасибо. – ironcurtain

+0

В основном удалите атрибуты стиля, удалите спецификацию heigh на панели и используйте 'System.Web.UI.HtmlControls.HtmlGenericControl (« div »)' в качестве обертки на ваш ярлык и кнопку – Jay

ответ

1

Проблема в том, что POSITION:relative, поэтому измените это на POSITION:absolute на обеих линиях, и вы будете хорошо.

+0

Я использовал POSITION: абсолютный, хотя я хотел сделать избегайте этого. Thaks. – ironcurtain

+0

@ user2027004, спасибо, и я рад, что смогу помочь. Пожалуйста, подумайте о том, чтобы выставить ответ и пометить его как ответ. –

+0

У меня есть еще одна проблема - когда я использую абсолютную позицию и у меня есть скрытые формы, она не работает друг с другом, потому что, когда скрытая форма появляется, кнопки изображений не находятся в правильном месте. Есть ли способ устранить эту проблему? – ironcurtain

Смежные вопросы