La liaison d'une DropDownList à l'intérieur d'un DetailsView
Je vais avoir des problèmes en essayant de remplir une liste déroulante à partir de la base de données. Quand je suis en train de définir la source de données que je ne trouve pas le menu déroulant, c'est dans un DetailsView donc je pense qu'il pourrait avoir quelque chose à faire avec elle seulement en cours de création quand il est en mode édition. Il dit encore qu'il est en mode courant, quand je suis en train de monter, donc pas sûr de ce qui se passe là-bas.
Voici le code à partir du fichier aspx:
<asp:DetailsView id="DetailsView1" runat="server" AutoGenerateRows="false" DataSourceID="myMySqlDataSrc" DataKeyNames="id" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="False" >
<Fields>
<asp:TemplateField HeaderText="Region">
<ItemTemplate><%# Eval("region_name") %></ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="RegionDropdownList" runat="server" SelectedValue='<%# Bind("region_id")%>' />
</EditItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
Et c'est à partir du code-behind:
ArrayList regionsList = BPBusiness.getRegions();
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
DropDownList ddlRegions = (DropDownList)DetailsView1.FindControl("RegionDropdownList");
if (ddlRegions != null)
{
ddlRegions.DataSource = regionsList;
ddlRegions.DataBind();
}
}
Quelle méthode est-ce que votre échantillon à partir du code derrière existent?
C'est dans le Page_Load.
C'est dans le Page_Load.
OriginalL'auteur annelie | 2010-04-23
Vous devez vous connecter pour publier un commentaire.
Si elle n'est pas déjà fait, de placer l'échantillon à partir de votre code derrière à l'intérieur de la DetailsView1_ModeChanged ou DetailsView1_DataBound méthode. Si c'est dans le DetailsView1_ModeChanging méthode, la mode n'a pas encore changé.
EDIT: Aussi, assurez-vous de configurer les propriétés de datatextfield et DataValueField comme suit:
Aussi supprimer le SelectedValue lier; il ne fait rien à l'exception de générer des erreurs.
EDIT 2: Si vous avez vraiment besoin pour sélectionner une valeur particulière de la dropdownlist quand elle est d'abord databind, vous pourriez faire quelque chose comme ceci:
Voir mon edit :).
Merci, je vais essayer ça! J'avais une liste de tableaux de arraylists donc juste besoin de changer en premier. Puis est devrait, espérons-le travail! 🙂
Droit, fonctionne très bien, merci beaucoup! Pour une raison quelconque, il n'est pas l'affichage de la valeur quand je fais une mise à jour donc il s'est mis à null, mais c'est une toute autre histoire, je suppose. Peut-poster une autre question si je ne trie pas moi-même. 🙂
OriginalL'auteur Matthew Jones
essayez de le faire dans le itemcreated méthode
n'oubliez pas de régler
OnItemCreated="DetailsView1_ItemCreated"
Utilisation DataBinder.Eval(Récipient.DataItem,"region_name") Plutôt la Méthode Eval(“region_name”)
OriginalL'auteur Glennular