Bonjour à tous,
Je suis en train de créer un menu en ASP.Net, seulement voilà j'ai un petit problème.
Lorsque je navique dans le premier niveau pas de problème, lorsque je clique sur un élément j'arrive au deuxième niveau.
Par contre lorsque je clique sur un élément du deuxième niveau, il me reset ma page.
Quelqu'un aurait une idée ?
Voici mon code :
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Xml; using System.IO; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;
namespace portal305 { /// <summary> /// Summary description for menu. /// </summary> public class menu : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Table Tmenu; protected DataSet MyDataSet; protected XmlDataDocument MyXmlData; #region Modification Objet Button protected class MenuButton : Button { private string Link; private int Id; private string Titre;
public string LinkProperties { get { return Link; } set { Link = value; } } public int IdProperties { get { return Id; } set { Id = value; } } public string TitreProperties { get { return Titre; } set { Titre = value; } } }
#endregion
#region Procédures de test accès XML private void DisplayTableStructure() { Response.Write("<br>Table structure <br>"); Response.Write("Tables count=" + MyXmlData.DataSet.Tables.Count.ToString()); for (int i = 0; i < MyXmlData.DataSet.Tables.Count; i++) { Response.Write("<br>TableName='" + MyXmlData.DataSet.Tables[i].TableName + "'."); Response.Write("<br>Columns count=" + MyXmlData.DataSet.Tables[i].Columns.Count.ToString());
for (int j = 0; j < MyXmlData.DataSet.Tables[i].Columns.Count; j++) { Response.Write("<br><br>ColumnName='" + MyXmlData.DataSet.Tables[i].Columns[j].ColumnName + "', type = " + MyXmlData.DataSet.Tables[i].Columns[j].DataType.ToString()); } } }
private void DisplayTables() { // Navigate MyDataSet Response.Write("Content of Tables ...\r\n");
foreach(DataTable table in MyDataSet.Tables) { Response.Write("TableName = " + table.TableName); Response.Write ( "<br>---------"); Response.Write("<br>Columns ...<BR>");
foreach(DataColumn column in table.Columns) { Response.Write("<BR>" + column.ColumnName); } Response.Write("<br>"); Response.Write("<br>Number of rows = " + table.Rows.Count.ToString()); Response.Write("Rows ...<br>");
foreach(DataRow row in table.Rows) { foreach(Object value in row.ItemArray) { Response.Write(value.ToString() + "<br>"); } Response.Write("<br>"); } Response.Write("<br>"); } }
#endregion // Chargement des datas à partir du fichier Xml et du fichier de schéma private DataSet LoadData() { const string document = "menu.xml"; const string myLoadSchema = "menu.xsd"; MyXmlData = new XmlDataDocument(); StreamReader MyReader = new StreamReader(Server.MapPath(myLoadSchema) ); MyXmlData.DataSet.ReadXmlSchema(MyReader); MyReader.Close();
MyXmlData.Load(Server.MapPath(document)); return MyXmlData.DataSet; }
// Procédure de céation du titre private void LoadTitle(string t ) { TableRow TRow = new TableRow(); TableCell TCell = new TableCell(); System.Web.UI.WebControls.Label CLabel = new System.Web.UI.WebControls.Label(); CLabel.Text = t; CLabel.Font.Bold = true; CLabel.Font.Name = "Bookman Old Style"; CLabel.ForeColor = Color.White; CLabel.Font.Size = FontUnit.Small; TCell = new TableCell(); TCell.Controls.Add(CLabel); TCell.HorizontalAlign = HorizontalAlign.Center; TCell.Height = Unit.Percentage(100); TCell.Width = Unit.Percentage(100); TCell.BackColor = Color.FromName("#993300"); TRow.Height = Unit.Point(40); TRow.Cells.Add(TCell); Tmenu.Rows.Add(TRow); }
private void LoadMenu( int prev, string titre) { TableCell TCell; TableRow TRow; Control TControl; Tmenu.Rows.Clear();
//Création d'un bouton retour ) la page d'acceuil si on n'y est pas if (prev != 0 ) { TRow = new TableRow(); TCell = new TableCell(); TControl = new MenuButton(); TCell.BackColor = Color.FromName("#993300"); ((MenuButton)TControl).Text = "Acceuil"; ((MenuButton)TControl).BackColor = Color.FromName("#993300"); ((MenuButton)TControl).BorderStyle = BorderStyle.None; ((MenuButton)TControl).Font.Bold = true; ((MenuButton)TControl).ForeColor = Color.White; ((MenuButton)TControl).Font.Size = FontUnit.Small; ((MenuButton)TControl).Font.Name = "Bookman Old Style"; ((MenuButton)TControl).Font.Underline = false; ((MenuButton)TControl).Click += new EventHandler(menu_Click); ((MenuButton)TControl).LinkProperties=""; ((MenuButton)TControl).IdProperties = 0; ((MenuButton)TControl).TitreProperties = "Menu"; ((MenuButton)TControl).Width = Unit.Percentage(100); TCell.Controls.Add(TControl); TCell.Height = Unit.Percentage(100); TCell.HorizontalAlign = HorizontalAlign.Center; TCell.Width = Unit.Percentage(100); TRow.Cells.Add(TCell); TRow.Height = Unit.Point(20); Tmenu.Rows.Add(TRow);
} // Création du titre du menu LoadTitle(titre);
foreach ( DataRow MyRow in MyDataSet.Tables["structmenu"].Rows) { // Insertion des menus si le précédent est correct.
if ( MyRow["Previous"].ToString() == prev.ToString()) { TRow = new TableRow(); TCell = new TableCell(); TControl = new MenuButton(); TCell.BackColor = Color.FromName("#993300"); ((MenuButton)TControl).Text = MyRow["Name"].ToString(); ((MenuButton)TControl).BackColor = Color.FromName("#993300"); ((MenuButton)TControl).BorderStyle = BorderStyle.None; ((MenuButton)TControl).ForeColor = Color.White; ((MenuButton)TControl).Font.Size = FontUnit.Small; ((MenuButton)TControl).Font.Name = "Bookman Old Style"; ((MenuButton)TControl).Font.Underline = false; ((MenuButton)TControl).LinkProperties=MyRow["Link"].ToString(); ((MenuButton)TControl).IdProperties = Convert.ToInt32(MyRow["Id"]); ((MenuButton)TControl).TitreProperties = MyRow["Name"].ToString(); ((MenuButton)TControl).Width = Unit.Percentage(100); ((MenuButton)TControl).Click += new EventHandler(menu_Click); TCell.Controls.Add(TControl); TCell.Height = Unit.Percentage(100); TCell.HorizontalAlign = HorizontalAlign.Center; TCell.Width = Unit.Percentage(100); TRow.Cells.Add(TCell); TRow.Height = Unit.Point(20); Tmenu.Rows.Add(TRow); } } }
// Procédure lors du Clic sur un bouton du menu
protected void menu_Click(object sender, EventArgs e) { if (((MenuButton)sender).LinkProperties.Length == 0) { LoadMenu(((MenuButton)sender).IdProperties, ((MenuButton)sender).TitreProperties); Response.Write("OK<br>"); } else { }
}
private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here MyDataSet = LoadData(); //DisplayTableStructure(); //DisplayTables(); LoadMenu(0,"Menu");
}
#region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load);
} #endregion
} }
|
Gaetan is there, the show must go on