1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda DropDownList dentro de DetailsView C#

Discussão em 'Web Development' iniciada por ReginoCoeli, 8 de Novembro de 2012. (Respostas: 1; Visualizações: 776)

  1. ReginoCoeli

    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 é:
    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.
     
  2. ReginoCoeli

    ReginoCoeli Power Member

    Upa !

    Ainda ando às voltas neste assunto. Ouvi falar em Linq, será que dá para o que quero?
     

Partilhar esta Página