Usuário com melhor resposta
Busca dinâmica - Listview - C#

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,
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
Referencias: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(); } } } }
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!- Sugerido como Resposta Luís Felipe Saraiva quinta-feira, 21 de julho de 2011 18:56
- Marcado como Resposta Levi DomingosModerator sexta-feira, 22 de julho de 2011 22:41
-
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çoMuito Obrigado, e desculpe o transtorno.
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!- Marcado como Resposta Levi DomingosModerator sexta-feira, 22 de julho de 2011 22:41
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 -
-
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,
-
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
Referencias: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(); } } } }
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!- Sugerido como Resposta Luís Felipe Saraiva quinta-feira, 21 de julho de 2011 18:56
- Marcado como Resposta Levi DomingosModerator sexta-feira, 22 de julho de 2011 22:41
-
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çoMuito Obrigado, e desculpe o transtorno.
-
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çoMuito Obrigado, e desculpe o transtorno.
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!- Marcado como Resposta Levi DomingosModerator sexta-feira, 22 de julho de 2011 22:41