代码之家  ›  专栏  ›  技术社区  ›  Jim

IE8表示,当使用动态占位符时,“无法显示网页”

  •  0
  • Jim  · 技术社区  · 15 年前

    我有一个ASP.NET使用占位符的页面。网格是以编程方式构建的,并在页面运行时添加到此占位符中。例子:

    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;
    }
    

    有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Community CDub    8 年前
        2
  •  0
  •   Erik Funkenbusch    15 年前

    在我看来,你真的不需要通过编程来创建这些。您可以像创建用户控件一样轻松地创建网格控件,然后将数据源传递给用户。如果需要的话,您可以在运行时加载用户控件,然后将整个构建过程剪切为网格的动态部分并让asp.net好好收拾。

    这并不是说你做不到,就像人们一直做的那样。我只是建议你要做更多的工作,以你现在的方式去做。