Je crée une page ASP.NET wep. J'ai une carte du monde et je veux ajouter quelques commandes de boutons d'image (villes) en C#. J'ai fait la méthode:Ajout de contrôles par programme
J'utilise la procédure stockée pour obtenir des données de la base de données mais quand j'ajoute la prochaine ville à la procédure, le bouton image précédemment ajouté change sa position.
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();
}
}
J'utilise panneau pour garder l'image sur la carte: .PanelMap { largeur: 960px; hauteur: 572px; text-align: à gauche; }
Ce qui devrait être changé dans le code ci-dessus pour garder les points à sa place?
J'ai essayé d'utiliser la position: absolu mais cela cause que la posiotion est dérivée par rapport à la page et j'aimerais qu'elle soit dérivée relativement au contrôle du panneau.
Vous pouvez envelopper vos boutons d'image et étiqueter dans un div html. Débarrassez-vous de la hauteur et du positionnement et il devrait juste couler pendant que vous ajoutez des éléments. – Jay
Jay, pourriez-vous s'il vous plaît être plus précis? Merci d'avance. – ironcurtain
Fondamentalement, supprimez vos attributs de style, supprimez la spécification de hauteur sur votre panneau et utilisez 'System.Web.UI.HtmlControls.HtmlGenericControl (" div ")' comme un wrapper à votre étiquette et le bouton – Jay