Question

J'ai une page ASP.NET à l'aide d'un PlaceHolder. Grids sont construites et programmation ajoutées à cette PlaceHolder lorsque la page est exécutée. Exemple:

ASPX Code:

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

Code de derrière:

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

Cette page fonctionne parfaitement dans Opera et Firefox. Internet Explorer 8 montre moi l'écran « ne peut pas afficher la page Web ».

Toutes les idées?

Était-ce utile?

Autres conseils

Vous allez toujours à courir dans une tonne de problèmes lors de la création des contrôles par programme. Il peut travailler sur get, mais pas sur le post, vous avez des problèmes dans les gestionnaires OnClick, etc .. il y a beaucoup de cerceaux que vous avez à sauter à travers pour faire des contrôles de programmation fonctionnent bien.

Il n'a vraiment pas de moi comme vous absolument besoin de créer ces programme. Vous pouvez aussi facilement créer le contrôle de la grille comme un contrôle utilisateur, puis passez votre DataSource à travers. Le cas échéant, vous pouvez charger les contrôles utilisateur lors de l'exécution, et vous coupez toute la partie construction grille dynamiclaly et laissez asp.net prendre soin du désordre.

Cela ne veut pas dire que vous ne pouvez pas le faire, que les gens font tout le temps. Je suggère simplement que vous définissez vous-même pour beaucoup plus de travail à faire de la façon dont vous êtes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top