ecf 0 Denunciar post Postado Dezembro 20, 2007 Boa tarde! Estou tentando fazer um filtro de dados, onde ao digitar alguma palavra num texbox e clicar num botão BUSCAR, irá mostrar todos os registros que contém aquela palavra num GridView; Fiz assim: private DataSet ds; protected void Page_Load(object sender, EventArgs e) { OleDbConnection conexao; conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/CFNEW/Sag-acess.mdb;"); conexao.Open(); OleDbDataAdapter da = new OleDbDataAdapter("Select CFTXNOMEF From [CF-CLIENTE FORNECEDOR]", conexao); ds = new DataSet(); da.Fill(ds, "[CF-CLIENTE FORNECEDOR]"); GridViewConsulta.DataSource = ds.Tables["CF-CLIENTE FORNECEDOR"]; } protected void Button1_Click1(object sender, EventArgs e) { ds.Tables["CF-CLIENTE FORNECEDOR"].DefaultView.RowFilter= "CFTXNOMEF LIKE '%" + TXTBUSCAR.Text + "%'"; } Porém está dando um erro na linha: ds.Tables["CF-CLIENTE FORNECEDOR"].DefaultView.RowFilter= "CFTXNOMEF LIKE '%" + TXTBUSCAR.Text + "%'"; Erro: Object reference not set to an instance of an object. (No momento que vou buscar o registro) Tenho que fazer mais alguma coisa? Estanciar algum objeto q ficou faltando? Linkar o GridView? Etc...? Já debuguei e não consegui solucionar o problema... Alguém sabe o q está errado, ou outra forma de fazer esse filtro, por favor? Desde ja eu agradeço. Muito Obrigada; Att.: ecf Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 21, 2007 ecf eu testei seu código, não deu erro, mas a Grid sequer carregou, acho que faltou o GridViewConsulta.DataBind(); tenta desta forma: private DataSet ds; protected void Page_Load(object sender, EventArgs e){ OleDbConnection conexao; conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/CFNEW/Sag-acess.mdb;"); conexao.Open(); OleDbDataAdapter da = new OleDbDataAdapter("Select CFTXNOMEF From [CF-CLIENTE FORNECEDOR]", conexao); ds = new DataSet(); da.Fill(ds, "[CF-CLIENTE FORNECEDOR]"); GridViewConsulta.DataSource = ds.Tables["CF-CLIENTE FORNECEDOR"]; GridViewConsulta.DataBind(); } protected void Button1_Click(object sender, EventArgs e) { ds.Tables["CF-CLIENTE FORNECEDOR"].DefaultView.RowFilter = "CFTXNOMEF LIKE '%" + TXTBUSCAR.Text + "%'"; GridViewConsulta.DataBind(); } Espero que de certo... Compartilhar este post Link para o post Compartilhar em outros sites
ecf 0 Denunciar post Postado Dezembro 21, 2007 ecf eu testei seu código, não deu erro, mas a Grid sequer carregou, acho que faltou o GridViewConsulta.DataBind(); tenta desta forma: private DataSet ds; protected void Page_Load(object sender, EventArgs e){ OleDbConnection conexao; conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/CFNEW/Sag-acess.mdb;"); conexao.Open(); OleDbDataAdapter da = new OleDbDataAdapter("Select CFTXNOMEF From [CF-CLIENTE FORNECEDOR]", conexao); ds = new DataSet(); da.Fill(ds, "[CF-CLIENTE FORNECEDOR]"); GridViewConsulta.DataSource = ds.Tables["CF-CLIENTE FORNECEDOR"]; GridViewConsulta.DataBind(); } protected void Button1_Click(object sender, EventArgs e) { ds.Tables["CF-CLIENTE FORNECEDOR"].DefaultView.RowFilter = "CFTXNOMEF LIKE '%" + TXTBUSCAR.Text + "%'"; GridViewConsulta.DataBind(); } Espero que de certo... Bom dia; Aff..não funcionou... O erro continua.... Tem outra maneira de filtrar dados de um texbox e mostrar no grid sem ser assim...? Muito Obrigado; Att.: ecf Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 21, 2007 Cara esse código que eu postei funcionou, mas vou colocar a forma com que eu trabalho, talvez sirva: static string Sql; protected void Page_Load(object sender, EventArgs e){ if (!IsPostBack) { Sql = "SELECT NOME FROM USUARIO WHERE 1=1"; if ((Request["Nome"] != "") && (Request["Nome"] != null)) { Sql += " AND NOME LIKE '"+ Request["Nome"] +"%'"; } MontaGrid(GridViewConsulta, Sql); } } protected void Button1_Click(object sender, EventArgs e) { Response.Redirect("Teste.aspx?Nome="+ TXTBUSCAR.Text); } protected void MontaGrid(GridView gv, string vSql) { VerificaCon(1); string StringCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/CFNEW/Sag-acess.mdb;"; OleDbDataAdapter DtF; DataSet DsF = new DataSet(); DtF = new OleDbDataAdapter(vSql, StringCon); DtF.Fill(DsF, "dados"); DtF.Dispose(); VerificaCon(2); gv.DataSource = DsF.Tables["dados"].DefaultView; gv.DataBind(); } O VerificaCon simplesmente abre e fecha conexão, espero que ajude... Compartilhar este post Link para o post Compartilhar em outros sites
ecf 0 Denunciar post Postado Dezembro 26, 2007 Cara esse código que eu postei funcionou, mas vou colocar a forma com que eu trabalho, talvez sirva: static string Sql; protected void Page_Load(object sender, EventArgs e){ if (!IsPostBack) { Sql = "SELECT NOME FROM USUARIO WHERE 1=1"; if ((Request["Nome"] != "") && (Request["Nome"] != null)) { Sql += " AND NOME LIKE '"+ Request["Nome"] +"%'"; } MontaGrid(GridViewConsulta, Sql); } } protected void Button1_Click(object sender, EventArgs e) { Response.Redirect("Teste.aspx?Nome="+ TXTBUSCAR.Text); } protected void MontaGrid(GridView gv, string vSql) { VerificaCon(1); string StringCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/CFNEW/Sag-acess.mdb;"; OleDbDataAdapter DtF; DataSet DsF = new DataSet(); DtF = new OleDbDataAdapter(vSql, StringCon); DtF.Fill(DsF, "dados"); DtF.Dispose(); VerificaCon(2); gv.DataSource = DsF.Tables["dados"].DefaultView; gv.DataBind(); } O VerificaCon simplesmente abre e fecha conexão, espero que ajude... Bom dia! ..Intaum...esse código q você postou...não funcionou aqui.....quando eu clico no botão BUSCAR não carrega Grid...nem faz nada..não entendi! Aqui...será que eu tenho que fazer um AccessDataSource para o Grid...ou não? Porque não consigo fazer esse filtro de forma alguma...e preciso dele urgente...Aff! Desespero! Obrigado; Att.: ecf Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 26, 2007 A forma com que eu trabalho no botão eu chamo a mesma página, dou um redirect para a mesma página passando na url o texto que foi colocado no TextBox, como você fez seu botão? Acho estranho, pois até mesmo seu primeiro código funciona pra mim. Compartilhar este post Link para o post Compartilhar em outros sites
ecf 0 Denunciar post Postado Dezembro 26, 2007 A forma com que eu trabalho no botão eu chamo a mesma página, dou um redirect para a mesma página passando na url o texto que foi colocado no TextBox, como você fez seu botão? Acho estranho, pois até mesmo seu primeiro código funciona pra mim. Intaum...vou t passar tudo o q fiz.... Na primeira vez fiz assim: private dataset ds; protected void Page_Load(object sender, EventArgs e){ OleDbConnection conexao; conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/CFNEW/Sag-acess.mdb;"); conexao.Open(); OleDbDataAdapter da = new OleDbDataAdapter("Select CFTXNOMEF From [CF-CLIENTE FORNECEDOR]", conexao); ds = new DataSet(); da.Fill(ds, "[CF-CLIENTE FORNECEDOR]"); GridViewConsulta.DataSource = ds.Tables["CF-CLIENTE FORNECEDOR"]; GridViewConsulta.DataBind() } protected void Button1_Click1(object sender, EventArgs e){ ds.Tables["CF-CLIENTE FORNECEDOR"].DefaultView.RowFilter = "CFTXNOMEF LIKE '%" + TXTBUSCAR.Text + "%'"; } Na página Cadastro.aspx tenho um texbox, um gridview e um botão; Ob: Eu não linkei nenhum accessdatasource para o gridview..teria q linkar? ...fiz simplesmente isso..mais nada... Quando eu digito alguma coisa no texbox...e clico no botão BUSCAR ele teria q listar pra mim no gridview, todos os registros ja cadastrados que tivesse aquele nome que eu digitei...ok? Porém quando eu digito algo no texbox e clico no botão ele me traz esse erro: Erro: Object reference not set to an instance of an object. --------------- Daí fiz assim...da forma q você me passou: veja: static string Sql; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Sql = "SELECT CFTXNOMEF FROM [CF-CLIENTE FORNECEDOR] WHERE 1=CFTXNOMEF"; if ((Request["CFTXNOMEF"] != "") && (Request["CFTXNOMEF"] != null)) { Sql += " AND CFTXNOMEF LIKE '" + Request["CFTXNOMEF"] + "%'"; } MontaGrid(gv, Sql); } protected void Button1_Click1(object sender, EventArgs e) { Response.Redirect("Cadastro.aspx?CFTXNOMEF=" + TXTBUSCAR.Text); } protected void MontaGrid(GridView gv, string vSql) { OleDbConnection conexao; conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/CFNEW/Sag-acess.mdb;"); conexao.Open(); OleDbDataAdapter DtF; DataSet DsF = new DataSet(); DtF = new OleDbDataAdapter(vSql, conexao); DtF.Fill(DsF, "CF-CLIENTE FORNECEDOR"); DtF.Dispose(); gv.DataSource = DsF.Tables["CF-CLIENTE FORNECEDOR"].DefaultView; gv.DataBind(); } ...Ob: Dessa vez..não fez nada...nerm erro...ném carregou gridview...nadinha... O q devo estar fazendo de errado? você tem alguma idéia.....aff.... Obrigado. Att.: ecf Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 26, 2007 A idéia é essa mesmo, achei estranho essa query: SELECT CFTXNOMEF FROM [CF-CLIENTE FORNECEDOR] WHERE 1=CFTXNOMEF Você já testou ela diretamente no banco de dados pra ver se retorna dados? Compartilhar este post Link para o post Compartilhar em outros sites
ecf 0 Denunciar post Postado Dezembro 27, 2007 A idéia é essa mesmo, achei estranho essa query: SELECT CFTXNOMEF FROM [CF<span style='color:orange'>-CLIENTE FORNECEDOR] WHERE 1=CFTXNOMEF Você já testou ela diretamente no banco de dados pra ver se retorna dados? Bom dia! Coloquei errado..é assim: SELECT CFTXNOMEF FROM [CF-CLIENTE FORNECEDOR] WHERE 1=1 Testei e funciona direitinho...no banco; Mas no sistema não funciona...Aff..preciso fazer esse sistema funcionar..só falta essa parte...e não consigo descobrir o q deve ser...Estress....\*~*/ Obrigado. Att.: ecf Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 28, 2007 Coloca um break point na sua função MontaGrid e veja o valor do parâmetro vSql, teste a query no banco, se der certo no banco tem que funcionar no sistema, a não ser que esteja em bancos diferentes. Outra coisa posta o código HTML da sua Grid... Da uma olhada, quem sabe é isso também: http://forum.imasters.com.br/index.php?showtopic=263921 Compartilhar este post Link para o post Compartilhar em outros sites
ecf 0 Denunciar post Postado Janeiro 2, 2008 Coloca um break point na sua função MontaGrid e veja o valor do parâmetro vSql, teste a query no banco, se der certo no banco tem que funcionar no sistema, a não ser que esteja em bancos diferentes. Outra coisa posta o código HTML da sua Grid... Da uma olhada, quem sabe é isso também: http://forum.imasters.com.br/index.php?showtopic=263921 Bom dia! Coloquei o break point na função MontaGridView e o valor do parâmetro vSql na primeira vez foi : SELECT CFTXNOMEF FROM [CF-CLIENTE FORNECEDOR] WHERE 1=1 Na segunda vez foi: SELECT CFTXNOMEF FROM [CF-CLIENTE FORNECEDOR] WHERE 1=1 AND CFTXNOMEF LIKE 'elai%' Obs:(Este 'elai%' é a palavra q eu digitei no texbox pra ele filtrar todos os registros que tenham esta palavra ) Quando executei esta linha : gv.DataSource = DsF.Tables["CF-CLIENTE FORNECEDOR"].DefaultView; O valor do DefaultView foi todos os registros que tinham a palavra 'elai%' ..porém acho que o problema está no GridView...ele não está mostrando o resultado... Aqui o código do Grid: <asp:GridView ID="gview" runat="server" AutoGenerateColumns="False" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black"> <FooterStyle BackColor="#CCCCCC" /> <RowStyle BackColor="White" /> <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" /> <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /> </asp:GridView> (Acho que o problema deve ser no GridView...em Como fazer para aparecer os dados filtrados...) você tem alguma idéia? Muito Obrigado; Att.: ecf Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Janeiro 3, 2008 Isso mesmo, pelo que vi o problema esta na GridView, você setou a propriedade AutoGenerateColumns como False, ou seja ela não vai alimentar sozinha os campos na sua Grid, e você não adicionou nenhum campo manualmente. Você tem duas opções setar a propriedade para True, desta forma todos os campos que estiverem na sua query serão adicionados na GridView, ou adicionar manualmente os campos, por exemplo: <asp:GridView ID="gview" runat="server" AutoGenerateColumns="False" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black"> <FooterStyle BackColor="#CCCCCC" /> <RowStyle BackColor="White" /> <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" /> <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /> <Columns> <asp:BoundField DataField="CFTXNOMEF" HeaderText="Nome" /> </Columns> </asp:GridView> Desta forma acima eu adicionei uma column manualmente. Espero que ajude... Compartilhar este post Link para o post Compartilhar em outros sites
ecf 0 Denunciar post Postado Janeiro 3, 2008 Isso mesmo, pelo que vi o problema esta na GridView, você setou a propriedade AutoGenerateColumns como False, ou seja ela não vai alimentar sozinha os campos na sua Grid, e você não adicionou nenhum campo manualmente. Você tem duas opções setar a propriedade para True, desta forma todos os campos que estiverem na sua query serão adicionados na GridView, ou adicionar manualmente os campos, por exemplo: <asp:GridView ID="gview" runat="server" AutoGenerateColumns="False" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black"> <FooterStyle BackColor="#CCCCCC" /> <RowStyle BackColor="White" /> <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" /> <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /> <Columns> <asp:BoundField DataField="CFTXNOMEF" HeaderText="Nome" /> </Columns> </asp:GridView> Desta forma acima eu adicionei uma column manualmente. Espero que ajude... Ha valeu é isso msm.... Muito obrigado; Att.: ecf Compartilhar este post Link para o post Compartilhar em outros sites