em

DropDownlist (de novo)...

Último post 05-04-2009 23:33 de ramorim. 2 respostas.
Página 1 de 1 (3 itens)
Classificação de Posts: Anterior Próximo
  • 05-04-2009 17:12

    • ramorim
    • Top 150 Contribuidores
    • Membro desde 06-06-2008
    • Santana do Livramento - RS
    • Posts 60
    • Pontos 655

    DropDownlist (de novo)...

    Olá

    Quando abro o panel e o detailsview para inserir novo registro, os dropdownlist (são 2, tipo uf e cidade) funcionam beleza. O primeiro esta com o autopostback ativado. Monta a pagina e insere sem problemas. Porem se mandar inserir um novo registro logo apos, ele nao encontra nenhum dos dropdownlist.

     A pagina esta com loginview e diversos panels e o comando para novo registro fecha e abre alguns panels, coloca o defaultmode para insert e chama o ddl_selectedindexchanged(null,null) para carregar o segundo dropdownlist.

     Alguém já passou por essa???

     

    Abraços

    • Pontos do post: 20
  • 05-04-2009 21:04 em resposta para

    • mfalthmann
    • Top 10 Contribuidores
    • Membro desde 04-01-2008
    • Cornélio Procópio, PR
    • Posts 161
    • Pontos 1,885

    Responder: DropDownlist (de novo)...

    E ai Rafael blz?

    Bom pela descrição que colocou nunca passei por isso não, mas posta o html e o fonte aqui.

    Abraços.

    Márcio Fábio Althmann
    Arquiteto/Desenvolvedor - CDS Informática
    Email: marcio@sharpcode.com.br
    • Pontos do post: 20
  • 05-04-2009 23:33 em resposta para

    • ramorim
    • Top 150 Contribuidores
    • Membro desde 06-06-2008
    • Santana do Livramento - RS
    • Posts 60
    • Pontos 655

    Responder: DropDownlist (de novo)...

    Marcio

    Vou tentar ser o mais resumido possivel, em termos de codigo..hehe

    O arquivo é composto de vários panels. Colapsei todo mundo e gerei uma imagem dele:

    Imagem1.jpg

    O código esta dentro do panel PanelAddPortFolio, e a parte, especifica, é:

    <asp:TemplateField HeaderText="Categoria" SortExpression="idcategoria">
                                <EditItemTemplate>
                                    <asp:DropDownList ID="DDEditCat" runat="server" DataSourceID="AccessEditDSCat" SelectedValue='<%# Bind("idcategoria") %>'
                                        DataTextField="categoria" DataValueField="id" OnSelectedIndexChanged="DDEditCat_SelectedIndexChanged"
                                        AutoPostBack="True">
                                    </asp:DropDownList>
                                    <asp:AccessDataSource ID="AccessEditDSCat" runat="server" DataFile="~/App_Data/MDBPRotec.mdb"
                                        SelectCommand="SELECT [id], [categoria] FROM [categorias]"></asp:AccessDataSource>
                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator12" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="DDEditCat">*</asp:RequiredFieldValidator>                                       
                                </EditItemTemplate>
                                <InsertItemTemplate>
                                    <asp:DropDownList ID="DDAddCat" runat="server" DataSourceID="AccessDSCat" SelectedValue='<%# Bind("idcategoria") %>'
                                        DataTextField="categoria" DataValueField="id" AutoPostBack="True" OnSelectedIndexChanged="DDAddCat_SelectedIndexChanged">
                                    </asp:DropDownList>
                                    <asp:AccessDataSource ID="AccessDSCat" runat="server" DataFile="~/App_Data/MDBPRotec.mdb"
                                        SelectCommand="SELECT [id], [categoria] FROM [categorias]"></asp:AccessDataSource>
                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator13" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="DDAddCat">*</asp:RequiredFieldValidator>                                       
                                </InsertItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("idcategoria") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="SubCategoria" SortExpression="idsubcategoria">
                                <EditItemTemplate>
                                    <asp:DropDownList ID="DDEditSCatPort" runat="server" DataTextField="subcategoria" DataValueField="id">
                                    </asp:DropDownList>
                                    <asp:HiddenField ID="HiddenFieldSCat" runat="server" Value='<%# Bind("idsubcategoria") %>' />

                                    <script language="javascript" type="text/javascript">
                                        document.getElementById('LoginViewAdm_DetailsPortfolio_DDEditSCatPort').value = document.getElementById('LoginViewAdm_DetailsPortfolio_HiddenFieldSCat').value
                                    </script>
                                </EditItemTemplate>
                                <InsertItemTemplate>
                                    <asp:DropDownList ID="DDAddSCat" runat="server">
                                    </asp:DropDownList>
                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator15" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="DDAddSCat">*</asp:RequiredFieldValidator>                                       
                                </InsertItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="Label5" runat="server" Text='<%# Bind("idsubcategoria") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
     

     No code behind, o comando que faz essa coisa toda ai funcionar é:

     

    protected void DDEditCat_SelectedIndexChanged(object sender, EventArgs e)
        {
            DetailsView det = (DetailsView)LoginViewAdm.FindControl("DetailsPortfolio");
            DropDownList cat = (DropDownList)det.FindControl("DDEditCat");
            DropDownList Scat = (DropDownList)det.FindControl("DDEditSCatPort");

            string wsql = "";

            if (e != null)
            {
                wsql = "SELECT [id], [categoria], [subcategoria] FROM [subcategorias] WHERE ([categoria] = " + cat.SelectedValue + ")";
            }
            else
            {
                wsql = "SELECT [id], [categoria], [subcategoria] FROM [subcategorias]";
            }


            OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\MDBPRotec.mdb;Persist Security Info=True");
            OleDbCommand comando = new OleDbCommand(wsql, conexao);
            OleDbDataAdapter adapter = new OleDbDataAdapter(comando);
            DataSet ds = new DataSet();

            conexao.Open();
            comando.ExecuteNonQuery();
            adapter.Fill(ds, "tmp");

            Scat.DataSource = ds.Tables[0];
            Scat.DataTextField = "subcategoria";
            Scat.DataValueField = "id";

            Scat.DataBind();

            conexao.Close();
        }

    protected void DDAddCat_SelectedIndexChanged(object sender, EventArgs e)
        {
           
            DetailsView det = (DetailsView)LoginViewAdm.FindControl("DetailsPortfolio");
            DropDownList cat = (DropDownList)det.FindControl("DDAddCat");
            DropDownList Scat = (DropDownList)det.FindControl("DDAddSCat");

            string wsql = "";

            if (e != null)
            {
                wsql = "SELECT [id], [categoria], [subcategoria] FROM [subcategorias] WHERE ([categoria] = " + cat.SelectedValue + ")";
            }
            else
            {
                wsql = "SELECT [id], [categoria], [subcategoria] FROM [subcategorias]";
            }


            OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\MDBPRotec.mdb;Persist Security Info=True");
            OleDbCommand comando = new OleDbCommand(wsql, conexao);
            OleDbDataAdapter adapter = new OleDbDataAdapter(comando);
            DataSet ds = new DataSet();

            conexao.Open();
            comando.ExecuteNonQuery();
            adapter.Fill(ds, "tmp");

            Scat.DataSource = ds.Tables[0];
            Scat.DataTextField = "subcategoria";
            Scat.DataValueField = "id";

            Scat.DataBind();

            conexao.Close();

        }

    Isso aqui tá rodando em asp 2.0, o bando banco de dados é o access.

    A rotina de testes, iniciais, era:

    1) Faz o insert, fecha tudo;
    2) Edita algo, fecha tudo.

    Quando publiquei e fui testar, inseri e alterei na mesma bateria de testes, ai o erro aconteceu. Se alguem quiser acessar e ver o erro "in loco", entra em contato comigo.

    Abraços

    • Pontos do post: 5
Página 1 de 1 (3 itens)
Provido por Community Server (Commercial Edition), por Telligent Systems