0

У меня есть страница ASP.NET с помощью PlaceHolder. Сетки создаются программно и добавляются в этот PlaceHolder, когда страница запущена. Пример:IE8 говорит, что «невозможно отобразить веб-страницу» при использовании динамического PlaceHolder

ASPX Код:

<asp:PlaceHolder ID="myPlaceHolder" runat="server" /> 

Код позади:

foreach (var country in Tables.Countries()) 
{ 
    var nGrid = BuildGrid(country.Code); 
    if (nGrid.Rows.Count > 0) 
    { 
     var lTitle = new Literal(); 
     lTitle.Text = "<h2>Stats for country " + country.Name + "</h2>"; 

     myPlaceHolder.Controls.Add(lTitle); 
     myPlaceHolder.Controls.Add(nGrid); 
    } 
    nGrid.Dispose(); 
} 

private GridView BuildGrid(short countryCode) 
{ 
    GridView nGrid = new GridView(); 
    nGrid.ID = "gr_" + countryCode; 
    nGrid.SkinID = "rpSkin"; 
    nGrid.AutoGenerateColumns = false; 
    nGrid.AllowPaging = false; 
    nGrid.AllowSorting = false; 
    nGrid.RowStyle.VerticalAlign = VerticalAlign.Top; 
    nGrid.EnableViewState = false; 

    var nField = new BoundField 
           { 
            HeaderText = "People", 
            DataField = "PeopleCount" 
           }; 
       nGrid.Columns.Add(nField); 

    // more BoundFields of this type exist 

    // This is basically the GridViewHelper class that gets Row Totals 
    // Disabling this doesn't help, either 
    HelpGrid(nGrid); 
    nGrid.DataSource = Country.GetPeople(countryCode); 
    nGrid.DataBind(); 
    return nGrid; 
} 

Эта страница работает безотказно в Opera и Firefox. Internet Explorer 8 показывает мне экран «не отображать веб-страницу».

Любые идеи?

+0

Может помочь включить ваш код aspx, а также –

+0

Просто простой placeholder ... Обновлено сообщение, чтобы включить его. – Jim

+0

Вам нужно определить, какой HTML сначала нарушает IE, тогда вы можете сузить, какие элементы ASP.NET вызывают его. –

ответ

0

Вы всегда сталкиваетесь с множеством проблем при программном создании элементов управления. Он может работать на получении, но не на почте, у вас есть проблемы с обработчиками OnClick и т. Д. Есть много обручей, которые вам нужно перепрыгнуть, чтобы заставить программные элементы управления работать правильно.

Это действительно не выглядит так, как будто вам абсолютно необходимо программно создать их. Вы можете так же легко создать элемент управления сеткой в ​​качестве пользовательского элемента управления, а затем передать свой DataSource. В случае необходимости вы можете загрузить пользовательские элементы управления во время выполнения, и вы вырезаете всю сборку грид-таблицы dynamiclaly, и пусть asp.net позаботится о беспорядке.

Это не значит, что вы не можете этого сделать, как люди делают все время. Я просто предлагаю, чтобы вы настраивали себя на гораздо большую работу, чтобы сделать это так, как вы.

+0

Существует несколько причин, по которым мне нужно, чтобы это было создано программно. Во всяком случае, проблема в том, что приведенный выше код работает с Firefox и Opera, но не с IE. – Jim

+1

Все это означает, что это, вероятно, приводит к некорректному HTML-сообщению или к тому, что размер данных вызывает таймаут. –

+0

Я превратил его в IE как-то не нравится BoundFields, добавленный программно к GridView! Комментирование nGrid.Columns.Add (nField); atleast показывает страницу! Все еще исследуя ... – Jim

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

  • Нет связанных вопросов^_^