0

PlaceHolderを使用したASP.NETページがあります。グリッドはプログラムで作成され、ページの実行時にこの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に、「Webページを表示できません」という画面が表示されます。

何か案は?

4

2 に答える 2

0

これはあなたの問題でしょうか?

于 2010-08-26T13:25:12.117 に答える
0

プログラムでコントロールを作成するときは、常に多くの問題が発生します。getでは機能する可能性がありますが、postでは機能しないため、OnClickハンドラーなどで問題が発生します。プログラム制御を正しく機能させるには、ジャンプする必要のある多くのフープがあります。

プログラムでこれらを作成する必要があるように私には思えません。ユーザーコントロールと同じくらい簡単にグリッドコントロールを作成し、データソースを渡すことができます。必要に応じて、実行時にユーザーコントロールをロードし、グリッドの動的部分のビルド全体を切り取って、asp.netに混乱を処理させることができます。

これは、人々がいつもそうしているように、あなたがそれをすることができないと言っているのではありません。私はあなたが今のようにそれをするためにもっとたくさんの仕事のためにあなた自身を準備していることを提案しているだけです。

于 2010-08-19T15:36:44.973 に答える