J'utilise DetailsView pour insérer des lignes dans la base de données. La ligne contient les champs id, subcategory_id etc. Je souhaite remplir dynamiquement la liste déroulante ddl_subcategories, qui est utilisée dans TemplateField. La valeur de l'élément sélectionné de la première liste déroulante ddl_categories est utilisée comme paramètre pour générer la collection pour ddl_subcategories. Je l'essaie avec UpdatePanel, mais la méthode DataBind renvoie l'erreur "Les méthodes de liaison de données telles que Eval(), XPath() et Bind() ne peuvent être utilisées que dans le contexte d'un contrôle de databound.".Comment lier des données à DropDownList dans UpdatePanel à l'intérieur DetailsView
Il y a un code de formulaire web
<asp:DetailsView ID="dvw" runat="server" Height="50px" Width="125px"
AutoGenerateRows="False" DataSourceID="ods"
DefaultMode="Insert" DataKeyNames="Section_id"
OnDataBound="dvw_DataBound" OnItemUpdated="dvw_ItemUpdated"
OnItemCommand="dvw_ItemCommand">
<Fields>
<asp:TemplateField HeaderText="Category" >
<ItemTemplate>
<asp:DropDownList ID="ddl_categories" runat="server" AutoPostBack="true" DataSourceID="ods_categories"
DataTextField="Name" DataValueField="Category_id" OnSelectedIndexChanged="category_select_index_changed"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Subcategory" >
<ItemTemplate>
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DropDownList ID="ddl_subcategories" runat="server"
SelectedValue='<%# Bind("Subcategory_id") %>' />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddl_categories" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</ItemTemplate>
</asp:TemplateField>
...
</Fields>
</asp:DetailsView>
Il fait partie de derrière le code:
protected void category_select_index_changed(object sender, EventArgs e)
{
DropDownList ddl_categories = (DropDownList)dvw.FindControl("ddl_categories");
List<SUBCATEGORY> sections = SUBCATEGORY.Select_all_by_parameters(Int32.Parse(ddl_categories.SelectedValue));//Select all subcategories by id of category
DropDownList ddl_subcategories= (DropDownList)dvw.FindControl("ddl_subcategories");
ddl_subcategories.DataSource = sections;
ddl_subcategories.DataTextField = "Name";
ddl_subcategories.DataValueField = "Subcategory_id";
ddl_subcategories.DataBind();
}
Quelle est mon erreur? Merci.
Avez-vous tout le code? Je ne vois pas ddl_subcategories dans votre codebehind – MCain
Dans this page est votre réponse. Vous devez utiliser correctement de DetailsView. –
Dans this page est votre réponse. vous devez utiliser correctement à partir de DetailsView. –