ReginoCoeli
Power Member
Boas.
Tenho 2 dropdownlist dentro de um template de inserção numa detailsview.
O dropdownlist 2 está dependente do 1º. Ambos estão a ir buscar os valores a um ficheiro XML.
O problema é que não consigo fazer essa associação dentro do detailsview.
O que tenho dentro do DetailsView é:
E no método ddlMarcas_SelectedIndexChanged(object sender, EventArgs e):
E dentro do XML tenho:
Assim está me a dar um erro: "Databiding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control".
Gostava que me ajudassem ou a corrigir o erro ou então outra maneira a que consiga fazer o que quero.
Tenho 2 dropdownlist dentro de um template de inserção numa detailsview.
O dropdownlist 2 está dependente do 1º. Ambos estão a ir buscar os valores a um ficheiro XML.
O problema é que não consigo fazer essa associação dentro do detailsview.
O que tenho dentro do DetailsView é:
Código:
<asp:TemplateField HeaderText="Marca" SortExpression="marca">
<InsertItemTemplate>
<asp:DropDownList ID="ddlMarcas" runat="server" DataSourceID="xmlDSMarcas"
DataTextField="nome" DataValueField="nome" AppendDataBoundItems="true" SelectedValue='<%# Bind("marca")%>'
AutoPostBack="True"
onselectedindexchanged="ddlMarcas_SelectedIndexChanged" Width="141px"
ondatabound="ddlMarcas_DataBound">
</asp:DropDownList>
<asp:XmlDataSource ID="xmlDSMarcas" runat="server"
DataFile="~/App_Data/XMLDefinicoes.xml" XPath="definicoes/marcas/marca">
</asp:XmlDataSource>
</InsertItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Modelo" SortExpression="modelo">
<InsertItemTemplate>
<asp:DropDownList ID="ddlModelos" runat="server" DataSourceID="xmlDSModelos"
DataTextField="descricao" DataValueField="descricao" AppendDataBoundItems="true"
SelectedValue='<%# Bind("modelo") %>' Width="141px">
</asp:DropDownList>
<asp:XmlDataSource ID="xmlDSModelos" runat="server"
DataFile="~/App_Data/XMLDefinicoes.xml"
XPath="definicoes/marcas/marca/modelos/modelo" ></asp:XmlDataSource>
</InsertItemTemplate>
</asp:TemplateField>
E no método ddlMarcas_SelectedIndexChanged(object sender, EventArgs e):
Código:
DropDownList ddlAuxMarca = new DropDownList();
ddlAuxMarca = (DropDownList)this.dvInserirViatura.FindControl("ddlMarcas");
DropDownList ddlAuxModelo = new DropDownList();
ddlAuxModelo = (DropDownList)this.dvInserirViatura.FindControl("ddlModelos");
XmlDataSource xmlDS_AuxModelo = new XmlDataSource();
xmlDS_AuxModelo = (XmlDataSource)this.dvInserirViatura.FindControl("xmlDSModelos");
ddlAuxModelo.Enabled = true;
xmlDS_AuxModelo.XPath= "definicoes/marcas/marca[@id=" + (ddlAuxMarca.SelectedIndex + 1) + "]/modelos/modelo";
E dentro do XML tenho:
Código:
<marca id="2" nome="Alfa Romeo">
<modelos>
<modelo id="1" descricao="159"></modelo>
<modelo id="2" descricao="Giulietta"></modelo>
<modelo id="3" descricao="MiTO"></modelo>
</modelos>
</marca>
.
.
.
Assim está me a dar um erro: "Databiding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control".
Gostava que me ajudassem ou a corrigir o erro ou então outra maneira a que consiga fazer o que quero.