2011-08-06 6 views
0

Je veux créer une grille dynamique avec la première rangée en tant que menu déroulant en cliquant sur le bouton d'édition. Je n'ai aucune idée sur la façon de commencer. Peux-tu aider s'il te plait. J'ai traversé quelques techniques et trouvé la méthode InstantiateIn que nous pouvons atteindre.créer une grille dynamique avec une liste déroulante

public class CreateItemTemplate : ITemplate 
    { 
     //Field to store the ListItemType value 
     private ListItemType myListItemType; 

     public CreateItemTemplate(ListItemType item) 
     { 
      myListItemType = item; 
     } 

     public void InstantiateIn(System.Web.UI.Control container) 
     { 
      //Code to create the ItemTemplate and its field. 
      if (myListItemType == ListItemType.Item) 
      { 
       TextBox txtCashCheque = new TextBox(); 
       container.Controls.Add(txtCashCheque); 
      } 
     } 
    } 
+0

Est-ce pour une seule instance d'une grille sur une page, ou êtes-vous créer un contrôle réutilisable? –

+0

pour une seule instance – premg

Répondre

0

Si vous souhaitez afficher ceci sur une seule page, vous ne devez pas créer de contrôle serveur.

Utilisez le champ TemplateField de la grille.

Remarque: si vous utilisez AutoGenerateColumns = true, ajoutez simplement la colonne au balisage de la grille. Il sera ajouté en premier.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"> 
    <Columns> 
    <asp:TemplateField> 
    <ItemTemplate> 
    <asp:DropDownList id="someId" runat="server"> 
     <asp:ListItem Text="One" /> 
        <asp:ListItem Text="twO" /> 
     </asp:DropDownList> 
    </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
    </asp:GridView> 

vous devrez peut-être fournir plus d'informations sur ce que vous voulez faire wth cette liste déroulante (at-il besoin d'une valeur par défaut?). En fonction de vos besoins, vous pourrez peut-être le faire dans le balisage, ou vous devrez peut-être utiliser un événement de grille.

  • Brian MISE À JOUR: gestionnaire d'événements en ajoutant

si vous définissez onrowcreated = "GridView1_RowCreated" dans la grille

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" 
     onrowcreated="GridView1_RowCreated"> 

et faites cela dans votre code derrière:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      var dropdown = e.Row.FindControl("someId") as DropDownList; 
      //dropdown.DataSource= <>; bind it 
      //dropdown.SelectedValue =<>";/set value how you would 
     } 
    } 

vous pouvez manipuler l'annonce déroulante créée. S'il ne peut pas vérifier les contrôles dans chaque cellule: e.Row.Cells [[index]]. FindControl ("" someId "")

+0

Dans ce cas, la colonne entière va se dérouler à droite? J'utilise AutoGenerateColumns = true. seulement cette grille est peuplée avec des données datables – premg

+0

dans ce cas vous aurez ajouté une nouvelle colonne qui est seulement une liste déroulante. ajout d'un exemple de gestionnaire d'événements –

Questions connexes