none
Busca dinâmica - Listview - C# RRS feed

  • Pergunta

  • Prezados,

    Na minha página web eu possuo três componentes um button, um DropDown e um ListView. Realizei a consulta em uma base de dados Access
    e gostaria que quando o usuário clicar no botão pesquisar, que o mesmo retorne a consulta selecionada no DropDown em um ListView. Porém,
    estou meio perdido que como ficaria o Click do button.

      public partial class Pesq : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
          OleDbConnection oConn = null;
          OleDbCommand oComm = null;
          OleDbDataReader oReader;
          string sSQL;
    
          sSQL = "Select UF,Cidade,Pessoa from Produto";
          string connStr = ConfigurationManager.ConnectionStrings["dbTeste"].ConnectionString;
    
          try
          {
            oConn = new OleDbConnection(connStr);
            oConn.Open();
    
            oComm = new OleDbCommand(sSQL, oConn);
            oReader = oComm.ExecuteReader();
    
            ddlPesquisa.DataSource = oReader;
            ddlPesquisa.DataBind();
    
          }
          catch (OleDbException db)
          {
    
            throw db;
          }
          finally
          {
            if (oConn.State == ConnectionState.Open)
              oConn.Close();
          }
        }
    
        protected void lnkBtPesq_Click(object sender, EventArgs e)
        {
          //lblMsg.Text = "Selecionou" + ddlPesquisa.Text + "(" + ddlPesquisa.SelectedItem.Value + ").";
          
        }
      }
    }
    


    Desde já agradeço a ajuda.

    Att,

     

     

    quarta-feira, 20 de julho de 2011 20:23

Respostas

  • Bom dia, fiz um exemplo simulando seu contexto, utilize DataTable mais imagine que você esteja consultando no banco de dados, entao ficaria assim:

    A pessoa seleciona a cidade, quando ele clicar no botão você passa o codigo da cidade ou nome da cidade como parâmetro para o SQL (SELECT CODIGO,FORNECEDOR FROM TB_FORNECEDORES WHERE CODIGOCIDADE = @parametro)

     

    Segue abaixo exemplo com DataTable:

    .aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication3.WebForm2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title>Untitled Page</title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:ScriptManager ID="Scriptmanager1" runat="server">
      </asp:ScriptManager>
      <div>
        <asp:DropDownList ID="ddlCidade" runat="server">
        </asp:DropDownList>
        <br />
        <br />
        <asp:Button ID="btnBuscar" runat="server" Text="Buscar" OnClick="btnBuscar_Click" />
        <br />
        <br />
        <asp:ListView ID="lstFornecedores" runat="server">
          <LayoutTemplate>
            <table cellpadding="2" width="640px" border="1">
              <tr style="background-color: #98FB98">
                <th>
                  Codigo Fornecedor
                </th>
                <th>
                  Fornecedor
                </th>
              </tr>
              <tr runat="server" id="itemPlaceholder" />
            </table>
          </LayoutTemplate>
          <ItemTemplate>
            <tr>
              <td>
                <%# Eval("CodigoCidade") %>
              </td>
              <td>
                <%# Eval("Fornecedor") %>
              </td>
            </tr>
          </ItemTemplate>
        </asp:ListView>
      </div>
      </form>
    </body>
    </html>
    
    



    .cs
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    namespace WebApplication3
    {
      public partial class WebForm2 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
          if (!IsPostBack)
          {
            //Instancia DataTable
            DataTable dt = new DataTable();
    
            //Criando colunas
            dt.Columns.Add("CodigoCidade", typeof(int));
            dt.Columns.Add("NomeCidade", typeof(string));
    
            //Adicionando valores ao DataTable
            dt.Rows.Add(1, "São Paulo");
            dt.Rows.Add(2, "Jundiai");
            dt.Rows.Add(3, "Minas Gerais");
    
            ddlCidade.DataSource = dt;
            ddlCidade.DataTextField = "NomeCidade";
            ddlCidade.DataValueField = "CodigoCidade";
            ddlCidade.DataBound += new EventHandler(IndiceZero);
            ddlCidade.DataBind();
          }
        }
    
        protected void IndiceZero(object sender, EventArgs e)
        {
          ddlCidade.Items.Insert(0, "Selecione");
        }
    
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
          if (ddlCidade.SelectedItem.ToString() != "Selecione")
          {
            //Instancia DataTable
            DataTable dt = new DataTable();
    
            //Criando colunas
            dt.Columns.Add("CodigoCidade", typeof(int));
            dt.Columns.Add("Fornecedor", typeof(string));
    
            //Recuperando codigo da cidade
            int _codigoCidade = Convert.ToInt32(ddlCidade.SelectedValue);
    
            //Query
            string _query = "CodigoCidade = " + _codigoCidade + "";
    
            //Adicionando valores ao DataTable
    
            //1
            dt.Rows.Add(1, "Balas Amelia");
            dt.Rows.Add(1, "Softwares Ltda.");
            dt.Rows.Add(1, "Wiki SCO");
    
            //2
            dt.Rows.Add(2, "Rows Bound Ltda.");
            dt.Rows.Add(2, "Bond Company");
            dt.Rows.Add(2, "Yakamura Leds");
    
            //3
            dt.Rows.Add(3, "Server BH Ltda.");
            dt.Rows.Add(3, "Chanel Ltda.");
            dt.Rows.Add(3, "TV Tupi");
    
            //Resultado
            DataTable dtResultado = new DataTable();
    
            //Criando colunas
            dtResultado.Columns.Add("CodigoCidade", typeof(int));
            dtResultado.Columns.Add("Fornecedor", typeof(string));
    
            //Gravando retorno da query no DataRows[]
            DataRow[] dtRow = dt.Select(_query);
    
            //Adicionando ao DataTable resultado
            for (int i = 0; i < dtRow.Length; i++)
            {
              dtResultado.Rows.Add(dtRow[i][0], dtRow[i][1]);
            }
    
            //Selecionando fornecedor de acordo com o codigo da cidade
            lstFornecedores.DataSource = dtResultado;
            lstFornecedores.DataBind();
          }
        }
      }
    }
    
    
    Referencias:
    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx
    http://www.malkafly.com.br/blog/2009/07/adicionando-o-item-selecione-dinamicamente-nos-dropdownlist/
    http://msdn.microsoft.com/en-us/library/system.data.datatable.select.aspx
     

     


    Vitor Mendes | Seu feedback é muito importante para todos!
    quinta-feira, 21 de julho de 2011 13:19
  • Vitor, muito obrigado pela resposta é isso mesmo que eu necessito, porém não estou conseguindo criar a string de conexâo, você pode me auxiliar mais nessa. Estou com uma base Access sendo a Tabela produtos e os campos são os seguintes:

    Cidade
    Fornecedor
    Endereço

    Muito Obrigado, e desculpe o transtorno.

     

     

    Olá, segue abaixo alguns links que como montar sua string de conexão para acessar base em access:
    http://www.connectionstrings.com/access-2007
    http://www.connectionstrings.com/access

    Basta olhar e adaptar de acordo com sua necessidade. 
    Vitor Mendes | Seu feedback é muito importante para todos!
    quinta-feira, 21 de julho de 2011 13:56

Todas as Respostas

  • Acho que você pode utilizar o DropDownList como um ControlParameter:

     

    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.controlparameter.aspx#Y2640

     

    Espero que seja útil.

     


    Assinatura: Imoveis comerciais em Guarulhos
    quarta-feira, 20 de julho de 2011 21:22
  • Ola, boa noite.

     

    Uma duvida, o que você que é passar os itens selecionados no Dropdownlist para o ListView ? Eu não consegui compreender direito.

     

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/ ;)
    quinta-feira, 21 de julho de 2011 01:45
  • Ola, boa noite.

     

    Uma duvida, o que você que é passar os itens selecionados no Dropdownlist para o ListView ? Eu não consegui compreender direito.

     

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/ ;)

    Prezado Altieri Pereira,

    Primeiramente obrigado pela resposta. É exatamente isso gostaria de carregar os valores no dropdown, e ao selecionar o valor (ex.: no meu caso cidade) ele pesquisa na base e mostra todos os fornecedores da cidade de São Paulo.

    Muito Obrigado,

     

     

    quinta-feira, 21 de julho de 2011 12:11
  • Bom dia, fiz um exemplo simulando seu contexto, utilize DataTable mais imagine que você esteja consultando no banco de dados, entao ficaria assim:

    A pessoa seleciona a cidade, quando ele clicar no botão você passa o codigo da cidade ou nome da cidade como parâmetro para o SQL (SELECT CODIGO,FORNECEDOR FROM TB_FORNECEDORES WHERE CODIGOCIDADE = @parametro)

     

    Segue abaixo exemplo com DataTable:

    .aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication3.WebForm2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title>Untitled Page</title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:ScriptManager ID="Scriptmanager1" runat="server">
      </asp:ScriptManager>
      <div>
        <asp:DropDownList ID="ddlCidade" runat="server">
        </asp:DropDownList>
        <br />
        <br />
        <asp:Button ID="btnBuscar" runat="server" Text="Buscar" OnClick="btnBuscar_Click" />
        <br />
        <br />
        <asp:ListView ID="lstFornecedores" runat="server">
          <LayoutTemplate>
            <table cellpadding="2" width="640px" border="1">
              <tr style="background-color: #98FB98">
                <th>
                  Codigo Fornecedor
                </th>
                <th>
                  Fornecedor
                </th>
              </tr>
              <tr runat="server" id="itemPlaceholder" />
            </table>
          </LayoutTemplate>
          <ItemTemplate>
            <tr>
              <td>
                <%# Eval("CodigoCidade") %>
              </td>
              <td>
                <%# Eval("Fornecedor") %>
              </td>
            </tr>
          </ItemTemplate>
        </asp:ListView>
      </div>
      </form>
    </body>
    </html>
    
    



    .cs
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    namespace WebApplication3
    {
      public partial class WebForm2 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
          if (!IsPostBack)
          {
            //Instancia DataTable
            DataTable dt = new DataTable();
    
            //Criando colunas
            dt.Columns.Add("CodigoCidade", typeof(int));
            dt.Columns.Add("NomeCidade", typeof(string));
    
            //Adicionando valores ao DataTable
            dt.Rows.Add(1, "São Paulo");
            dt.Rows.Add(2, "Jundiai");
            dt.Rows.Add(3, "Minas Gerais");
    
            ddlCidade.DataSource = dt;
            ddlCidade.DataTextField = "NomeCidade";
            ddlCidade.DataValueField = "CodigoCidade";
            ddlCidade.DataBound += new EventHandler(IndiceZero);
            ddlCidade.DataBind();
          }
        }
    
        protected void IndiceZero(object sender, EventArgs e)
        {
          ddlCidade.Items.Insert(0, "Selecione");
        }
    
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
          if (ddlCidade.SelectedItem.ToString() != "Selecione")
          {
            //Instancia DataTable
            DataTable dt = new DataTable();
    
            //Criando colunas
            dt.Columns.Add("CodigoCidade", typeof(int));
            dt.Columns.Add("Fornecedor", typeof(string));
    
            //Recuperando codigo da cidade
            int _codigoCidade = Convert.ToInt32(ddlCidade.SelectedValue);
    
            //Query
            string _query = "CodigoCidade = " + _codigoCidade + "";
    
            //Adicionando valores ao DataTable
    
            //1
            dt.Rows.Add(1, "Balas Amelia");
            dt.Rows.Add(1, "Softwares Ltda.");
            dt.Rows.Add(1, "Wiki SCO");
    
            //2
            dt.Rows.Add(2, "Rows Bound Ltda.");
            dt.Rows.Add(2, "Bond Company");
            dt.Rows.Add(2, "Yakamura Leds");
    
            //3
            dt.Rows.Add(3, "Server BH Ltda.");
            dt.Rows.Add(3, "Chanel Ltda.");
            dt.Rows.Add(3, "TV Tupi");
    
            //Resultado
            DataTable dtResultado = new DataTable();
    
            //Criando colunas
            dtResultado.Columns.Add("CodigoCidade", typeof(int));
            dtResultado.Columns.Add("Fornecedor", typeof(string));
    
            //Gravando retorno da query no DataRows[]
            DataRow[] dtRow = dt.Select(_query);
    
            //Adicionando ao DataTable resultado
            for (int i = 0; i < dtRow.Length; i++)
            {
              dtResultado.Rows.Add(dtRow[i][0], dtRow[i][1]);
            }
    
            //Selecionando fornecedor de acordo com o codigo da cidade
            lstFornecedores.DataSource = dtResultado;
            lstFornecedores.DataBind();
          }
        }
      }
    }
    
    
    Referencias:
    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx
    http://www.malkafly.com.br/blog/2009/07/adicionando-o-item-selecione-dinamicamente-nos-dropdownlist/
    http://msdn.microsoft.com/en-us/library/system.data.datatable.select.aspx
     

     


    Vitor Mendes | Seu feedback é muito importante para todos!
    quinta-feira, 21 de julho de 2011 13:19
  • Vitor, muito obrigado pela resposta é isso mesmo que eu necessito, porém não estou conseguindo criar a string de conexâo, você pode me auxiliar mais nessa. Estou com uma base Access sendo a Tabela produtos e os campos são os seguintes:

    Cidade
    Fornecedor
    Endereço

    Muito Obrigado, e desculpe o transtorno.

     

     

    quinta-feira, 21 de julho de 2011 13:46
  • Vitor, muito obrigado pela resposta é isso mesmo que eu necessito, porém não estou conseguindo criar a string de conexâo, você pode me auxiliar mais nessa. Estou com uma base Access sendo a Tabela produtos e os campos são os seguintes:

    Cidade
    Fornecedor
    Endereço

    Muito Obrigado, e desculpe o transtorno.

     

     

    Olá, segue abaixo alguns links que como montar sua string de conexão para acessar base em access:
    http://www.connectionstrings.com/access-2007
    http://www.connectionstrings.com/access

    Basta olhar e adaptar de acordo com sua necessidade. 
    Vitor Mendes | Seu feedback é muito importante para todos!
    quinta-feira, 21 de julho de 2011 13:56