2015-09-29 2 views
0

У меня есть динамическое меню, которое создается из базы данных в событии Page_Load.
Когда моя страница загружается, в течение одной секунды или меньше моей страницы появился, как показано ниже:не применяется css для динамического html-меню

enter image description here

, а затем:

enter image description here

Как я могу решить эту проблему?

Мой код позади:

public void Page_Load(object sender, EventArgs e) 
{ 
    Database db = new Database(); 

    if (!IsPostBack) 
    { 
     string queryMenu = 
      "select a.CatId,c.CatName,a.ParentId,b.totalSubCats from ProductCategory as a LEFT OUTER JOIN (select ParentId,count(*) as totalSubCats from ProductCategory group by ParentId) as b on a.CatId=b.ParentId LEFT OUTER JOIN ProductCategory as c on a.CatId = c.CatId ORDER BY a.CatId"; 
     SqlCommand smd = new SqlCommand(queryMenu, db.sc); 
     DataTable dt = new DataTable(); 
     dt.Load(smd.ExecuteReader()); 
     this.createMenu(dt, 0); 
    } 
} 


private void createMenu(DataTable dt, int pID) 
{ 
    LiteralMenu.Text = LiteralMenu.Text + "<ul>"; 
    for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     if (Convert.ToInt32(dt.Rows[i]["ParentId"]) == pID) 
     { 
      LiteralMenu.Text = LiteralMenu.Text + "<li><a href='/category/" + dt.Rows[i]["CatId"].ToString() + "'>" + 
       dt.Rows[i]["CatName"].ToString() + "</a>"; 
      if (dt.Rows[i]["totalSubCats"] != DBNull.Value) 
       this.createMenu(dt, Convert.ToInt32(dt.Rows[i]["CatId"])); 
      LiteralMenu.Text = LiteralMenu.Text + "</li>"; 
     } 
    } 
    LiteralMenu.Text = LiteralMenu.Text + "</ul>"; 
} 
+0

Загрузите ** ** ** ** перед ** javascript **, попробуйте поместить свой ** CSS ** в свой 'head' и все ** javascript ** или ** jQuery ** в конце вашего' body '. – vivekkupadhyay

+0

@vivekkupadhyay мой файл css находится перед js-файлами. –

+0

@MajidBasirati просто положил ваш код page_load, чтобы хорошо понять ваш сценарий. – Sankar

ответ

0

У меня была такая же проблема и раньше, Я думаю, что идентификатор или класс, который вы использовали в вашем файле css, были добавлены с помощью jQuery.

+0

Правильно. Моя проблема решена с вашей помощью. –

0

Там может быть аккуратнее решение, но всякий раз, когда у меня есть такого рода вопрос я поставил раскрывающийся материал для display: none; в CSS и затем JavaScript изменить его обратно в display: block; (или что угодно) при загрузке страницы. Таким образом, вы не ожидаете выполнения JavaScript для скрытия содержимого - теперь все наоборот.

+0

Как я уже сказал, я скрываю выпадающее меню в css, а не в js. (Если вы видите первое изображение) Любой код css не применяется к моему меню. –

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