2009-09-25 8 views
0

J'essaye d'ajouter une colonne de type de recherche à un gridview. La colonne sera utilisée comme liste de valeurs pour que l'utilisateur puisse choisir une valeur. Cela semble assez simple, mais le problème est que je veux que la liste de sélection soit une liste distincte d'une table qui n'est pas dans la source de données de la grille. Si je rejoins la table de sélection dans ma source de données, il est possible que je ne reçoive pas la liste complète des valeurs, si je crée un syndicat, je suppose que j'obtiendrai plusieurs entrées dans la liste de sélection. Donc je pense que je dois joindre la colonne de liste de sélection à une autre source de données ou ...? Dunno? à vous (espérons-le) et merci pour toute aide offerte..net 2005 gridview

Répondre

1

Vous pouvez créer une colonne de modèle contenant une liste déroulante. Vous pouvez ensuite faire en sorte que la liste déroulante soit databound par tout ce qui comprend une ressource objectdatas séparée.

<asp:TemplateField HeaderText="Lookup"> 
    <itemtemplate> 
     <asp:DropDownList runat="server" DataSourceId="SeperateDataSource" SelectedValue='<%# Bind("ValueThatIsSelectedUID") %>' ></asp:DropDownList> 
     <asp:ObjectDataSource runat="server" id="SeperateDataSource" selectmethod="SomeSelectMethod"></asp:ObjectDataSource> 
    </itemtemplate> 
</asp:TemplateField> 

Le champ modèle prend également en charge edititemtemplate, footertemplate et headertemplate.

+0

Bon homme, merci Chris. J'ai presque fait fonctionner la liste déroulante, j'ai juste besoin de l'obtenir pour mettre à jour la ligne dans laquelle elle existe avec la valeur qui a été sélectionnée oh et je vais devoir la mettre à la bonne valeur pour chaque ligne quand la grille est instancié. Mais de toute façon pas loin, merci encore. –

+0

WILL, vous n'avez pas besoin d'utiliser l'événement rowdatabound pour définir la valeur sélectionnée de la liste déroulante. Au lieu de cela, vous pouvez numériser directement à partir de la source de données dans le balisage. J'ai révisé mon exemple pour montrer comment lier les données à l'attribut selectedvalue. – Chris

1

Vous allez devoir créer un modèle d'édition contenant une liste déroulante. Ensuite, dans l'événement databound de votre gridview, vous aurez besoin de code pour remplir le ddl:

protected void grdGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 

    if (grdGrid.EditIndex == e.Row.RowIndex) 
    { 
    ddlMine = (DropDownList)e.Row.Cells[0].FindControl("ddlMine"); 
    //bind ddlMine 
    } 
} 
+0

Merci Loren, c'est ce script java? J'ai le sentiment que je devrais utiliser cet événement pour obtenir et définir la valeur de la liste déroulante. –

+0

C'est le code C# dans le code derrière. La traduction en VB devrait être triviale. –