Frage

Ich habe eine ASP.NET-Seite einen Platzhalter verwenden. Grids sind Build programmatisch und zu diesen Platzhalter hinzugefügt, wenn die Seite ausgeführt wird. Beispiel:

ASPX Code:

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

-Code hinter:

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

Diese Seite funktioniert einwandfrei in Opera und Firefox. Internet Explorer 8 zeigt mir die „kann die Webseite nicht angezeigt werden“ angezeigt.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Andere Tipps

Sie werden immer in eine Tonne Probleme laufen, wenn Steuerelemente programmgesteuert zu erstellen. Es kann auf get arbeiten, aber nicht auf Post, Sie haben Probleme in OnClick-Handler, etc .. es gibt eine Menge von Reifen Sie programmatische Steuerelemente rechts springen durch machen müssen.

Es sieht wirklich nicht für mich wie Sie unbedingt benötigen, um diese programmatisch zu erstellen. Sie könnten genauso gut die Netzsteuerung als eine Benutzersteuerung erstellen, dann Datasource passieren. Wenn nötig, können Sie die Benutzersteuerung zur Laufzeit laden, und schneiden Sie das Gitter dynamiclaly Teil der gesamten Build und asp.net kümmern sich um das Chaos lassen.

Dies ist nicht zu sagen, dass Sie es nicht tun, da die Menschen die ganze Zeit tun. Ich schlage nur, dass Sie sich für eine Menge mehr Arbeit sind einstellen es die Art und Weise zu tun, Sie sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top