0

PlaceHolder를 사용하는 ASP.NET 페이지가 있습니다. 그리드는 프로그래밍 방식으로 빌드되며 페이지가 실행될 때이 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; 
} 

이 페이지는 오페라와 파이어 폭스에서 완벽하게 작동합니다. Internet Explorer 8에 "웹 페이지를 표시 할 수 없습니다"라는 메시지가 나타납니다.

아이디어가 있으십니까?

+0

aspx 코드도 포함 할 수 있습니다. –

+0

그냥 간단한 자리 표시 자 ... 포함하도록 게시물을 업데이트했습니다. – Jim

+0

어떤 HTML이 IE를 먼저 위반하는지 식별해야합니다. 그런 다음 ASP.NET 요소가 원인 인 범위를 좁힐 수 있습니다. –

답변

0

프로그래밍 방식으로 컨트롤을 만들 때 항상 많은 문제가 발생합니다. 그것은 얻을 수 있지만, 게시물에, 당신 OnClick 처리기 등 문제가 있습니다. 거기에 농구가 프로그램의 컨트롤을 제대로 작동하게하기 위해 뛰어야한다.

프로그래밍 방식으로 생성해야하는 것처럼 보이지 않습니다. 사용자 정의 컨트롤로 그리드 컨트롤을 쉽게 생성 한 다음 데이터 소스를 전달할 수 있습니다. 필요한 경우 런타임에 사용자 정의 컨트롤을로드 할 수 있으며 그리드 전체를 잘라내어 dynamiclaly 부분을 작성하고 asp.net이 혼란을 처리하도록 할 수 있습니다.

사람들이 항상 그렇듯이 그렇게 할 수 없다는 것은 아닙니다. 나는 네가 그렇게하는 많은 일을 위해 스스로를 준비하고 있다고 제안하고있다.

+0

프로그래밍 방식으로 생성해야하는 이유는 여러 가지가 있습니다. 여하튼 문제는 위의 코드가 Firefox와 Opera에서 작동하지만 IE에서는 작동하지 않는다는 것입니다. – Jim

+1

이 모든 것은 아마도 잘못된 HTML을 어떻게 든 생성하고 있거나 데이터 크기가 제한 시간을 초래하고 있다는 것을 의미합니다. –

+0

나는 BoundFields가 프로그래밍 방식으로 GridView에 추가 된 것을 좋아하지 않는다. nGrid.Columns.Add (nField) 주석 처리; atleast 페이지를 보여줍니다! 아직 탐험 중입니다 ... – Jim

관련 문제