Mon filtrage, pas trop "certain". Besoin d'aide s.v.p

Résolu
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 21 nov. 2011 à 19:56
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 2 déc. 2011 à 23:20
private void btnFind_Click(object sender, EventArgs e)
{
string searchFor = "Julien";
int results = 0;

DataRow[] returnedRows;

returnedRows = ds1.Tables["workers"].Select("last_name='" + searchFor + "'");

results = returnedRows.Length;

if (results > 0)
{
DataRow dr1;

dr1 = returnedRows[0];
//montrera la donnée filtrée sur mon "messageBox"
MessageBox.Show(dr1["job_title"].ToString());

//montrera la donnée filtrée sur "textbox3"
//textBox3.Text = dr1.ItemArray.GetValue(3).ToString();
//montrera la donnée filtrée sur "combobox"
//comboBox1.Text = dr1.ItemArray.GetValue(3).ToString();


}
else
{
MessageBox.Show("Pas d'enregistrement trouvé");
}
}


Developper est une dimension pour moi.
Leader2000

11 réponses

Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
2 déc. 2011 à 23:20
Salut!

J'ai resolu ce problème de filtrage!
Merci à tous ceux qui m'ont envoyé leurs codes. Ça m'a inspiré.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>



</configuration>



Then store the emp.mdb in bin folder.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace Search
{
public partial class Form1 : Form
{
string ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["dsn"];
OleDbCommand com;
OleDbDataAdapter oledbda;
DataSet ds;
string str;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(ConnectionString);
con.Open();
str = "select * from student where sname like '%" + textBox1.Text + "%'";
com = new OleDbCommand(str, con);
oledbda = new OleDbDataAdapter(com);
ds = new DataSet();
if (Convert.ToBoolean(oledbda.Fill(ds, ("student"))))
{
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "student";
MessageBox.Show("match found");
}
else
{
MessageBox.Show("match not found");

}
con.Close();
}
}
}


Developper est une dimension pour moi.
Leader2000
3
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
21 nov. 2011 à 20:06
PARDON! J'AI FAIT UNE GROSSE BETISSE. J'AVAIS PAS BIEN POSER MA QUESTION. LA VOICI BIEN EXPLIQUE. ENCORE UNE FOIS, PARDON.
Salut à TOUS!

Je suis un novice dans le language C#. Mais ayant quelques bases fondamentals posées. Bien qu'il faut encore les dominées sérieusement.
j'utilise du VS 2010 et j'ai une preocupation sur le filtrage de données.

Sur mon form, j'ai un dbGrid ayant 6 enregistrements et un TButton sur lequel j'ai écrit de codes de recherche par exemple d'un enregistrement. Ma valeur de recherche est faite sur "julien". Ça marche bien! Mon MessageBox me dit qui est "Julien". Mais curieusement, mon DbGrid continue a m'afficher tous les 6 dits enregistrements. Du moins, en me montrant une ou deux données supplémentaires de "julien" sur le dit Messagebox. Que veux-je? J'aimerai voir s'afficher seulement sur mon DbGrid un seul enregistrement qu'est "Julien".

----------------
Juste une question de filtrage qui decapote tout. Besoin d'aide s.v.p

private void btnFind_Click(object sender, EventArgs e)
{
string searchFor = "Julien";
int results = 0;

DataRow[] returnedRows;

returnedRows = ds1.Tables["workers"].Select("last_name='" + searchFor + "'");

results = returnedRows.Length;

if (results > 0)
{
DataRow dr1;

dr1 = returnedRows[0];
//montrera la donnée filtrée sur mon "messageBox"
MessageBox.Show(dr1["job_title"].ToString());

//montrera la donnée filtrée sur "textbox3"
//textBox3.Text = dr1.ItemArray.GetValue(3).ToString();
//montrera la donnée filtrée sur "combobox"
//comboBox1.Text = dr1.ItemArray.GetValue(3).ToString();


}
else
{
MessageBox.Show("No record found");
}
}

Developper est une dimension pour moi.
Leader2000
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
22 nov. 2011 à 10:07
Salut,

dans ton code à aucun moment tu n'agis sur le contrôle DataGrid, comment veux-tu qu'il y ait un changement dans son affichage ? Alors je suis pas un expert des DataGrid et autres contrôles d'affichage de données prédéfinis, mais le comportement que tu décris ne me choque pas aux vues de ton code.
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
22 nov. 2011 à 10:13
Merci d'avoir repondu. C'est pour cela que j'ai besoin d'aide dessus. Je sais que je n'ai écris aucun code sur les données à afficher sur mon dbgrid. Du moins, il y a un éclaircissement dans mes codes. Je crois qu'à partir de là on peut comprendre mon problème.

Developper est une dimension pour moi.
Leader2000
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
22 nov. 2011 à 10:54
Bonjour,

A mon avis le Datasource de ton datagrid doit être ton returnedRows.

Et de plus le returnedRows devrait être défini dans la classe de la fenêtre contenant ton datagrid et pas localement à la fonction de traitement de bouton.

Bonne journée



Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
23 nov. 2011 à 16:49
J'ai comme l'impression que personne ne peut me faire quelques bons éclairciseements dessus.


Developper est une dimension pour moi.
Leader2000
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
23 nov. 2011 à 17:17
Bonjour,

Qu'as tu mis dans le DataSource de ton Datagrid ?





Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
24 nov. 2011 à 08:35
perso je connais quelqu'un qui pourrait te faire tous les éclaircissements que tu souhaites, je m'y réfère très souvent : MSDN
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
24 nov. 2011 à 09:34
Bonjour,

ton


DataRow[] returnedRows;

returnedRows = ds1.Tables["workers"].Select("last_name='" + searchFor + "'");

te renvoie le liste d'enregistrement pour last_name = '<searchFor>' dans returnedRows.

mais ne modifie pas ds1.Tables["workers"] qui est en pricipe le datasource de ton datagrid.

pourquoi veux-tu que ton datagrid change.

test ceci cela devrait marcher :

TonDataGrid.DataSource = ds1.Tables["workers"].Select("last_name='" + searchFor + "'");


Les données de ta datatable viennent d'ou ? d'un dataadapteur ?

Bonne journée



Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
LUDINSKI Messages postés 441 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 22 mai 2012 8
24 nov. 2011 à 13:20
Salut,

Si ton DataGrid affiche les données de la table "workers" de ton DataSet, il te suffit de "filtrer" les données de ton DataSet :

ds1.Tables["workers"].DefaultView.RowFilter = "last_name='" + searchFor + "'";
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
24 nov. 2011 à 15:59
Salut!

Vraiment, je n'en peux rien je suis obligé d'envoyer tous les codes.
Venez moi en aide s'il vous plait:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Zemirah
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
System.Data.SqlClient.SqlConnection con;
System.Data.SqlClient.SqlDataAdapter da;
DataSet ds1;

int MaxRows = 0;
int inc = 0;

private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'myWorkersDataSet1.tblWorkers' table. You can move, or remove it, as needed.
this.tblWorkersTableAdapter.Fill(this.myWorkersDataSet1.tblWorkers);
con = new System.Data.SqlClient.SqlConnection();
ds1 = new DataSet();

con.ConnectionString = @"Data Source=.\SQLEXPRESS; AttachDbFilename =C:\EXERCICIOS_C#_2010\ZEMIRAH\ZEMIRAH\MYWORKERS.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True";

con.Open();
string sql = "Select * from tblWorkers";
da = new System.Data.SqlClient.SqlDataAdapter(sql, con);
da.Fill(ds1, "Workers");
NavigateRecords();
MaxRows = ds1.Tables["Workers"].Rows.Count;
con.Close();
//con.Dispose();
}

private void NavigateRecords()
{

DataRow dRow = ds1.Tables["Workers"].Rows[inc];
textBox1.Text = dRow.ItemArray.GetValue(1).ToString();
textBox2.Text = dRow.ItemArray.GetValue(2).ToString();
textBox3.Text = dRow.ItemArray.GetValue(3).ToString();
}

private void btnNext_Click(object sender, EventArgs e)
{
if (inc != MaxRows - 1)
{
inc++;
NavigateRecords();
}
else
{
MessageBox.Show("No more row(s)");
}
}

private void button1_Click(object sender, EventArgs e)
{
if (inc > 0)
{
inc--;
NavigateRecords();
}
else
{
MessageBox.Show("First Row");
}
}

private void btnLast_Click(object sender, EventArgs e)
{
if (inc != MaxRows - 1)
{
inc = MaxRows - 1;
NavigateRecords();
}
else
{
MessageBox.Show("Last row");
}
}

private void button1_Click_1(object sender, EventArgs e)
{
if (inc != 0)
{
inc = 0;
NavigateRecords();
}
}

private void btnAddNew_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
}

private void btnSave_Click(object sender, EventArgs e)
{

System.Data.SqlClient.SqlCommandBuilder cb;
cb = new System.Data.SqlClient.SqlCommandBuilder(da);


DataRow dRow = ds1.Tables["workers"].NewRow();

dRow[1] = textBox1.Text;
dRow[2] = textBox2.Text;
dRow[3] = textBox3.Text;

ds1.Tables["workers"].Rows.Add(dRow);

MaxRows = MaxRows + 1;
inc = MaxRows - 1;

da.Update(ds1, "workers");
MessageBox.Show("Entry Added");

}

private void btnDelete_Click(object sender, EventArgs e)
{
System.Data.SqlClient.SqlCommandBuilder cb;
cb = new System.Data.SqlClient.SqlCommandBuilder(da);

ds1.Tables["workers"].Rows[inc].Delete();
MaxRows--;
inc = 0;
NavigateRecords();

da.Update(ds1, "workers");
MessageBox.Show("Record deleted");
}
//le problème commence très exactement ici////////////
private void btnFind_Click(object sender, EventArgs e)
{
//search from code writing a name
//string searchFor = "julien";

//search from a textbox
string searchFor = textBox1.Text;

int results = 0;

DataRow[] returnedRows;

//returnedRows = ds1.Tables["workers"].Select("last_name='" + searchFor + "'");
dataGridView1.DataSource ds1.Tables["workers"].DefaultView.RowFilter "last_name='" + searchFor + "'";

//ds1.Tables["workers"].DefaultView.RowFilter = "last_name='" + searchFor + "'";

results = returnedRows.Length;

if (results > 0)
{
DataRow dr1;

dr1 = returnedRows[0];
//will show data filtered on a "messageBox"
MessageBox.Show(dr1["job_title"].ToString());

//will show data filtered on "textbox3"
//textBox3.Text = dr1.ItemArray.GetValue(3).ToString();

//comboBox1.Text = dr1.ItemArray.GetValue(3).ToString();



}
else
{
MessageBox.Show("No record found");
}
}



}
}


Developper est une dimension pour moi.
Leader2000
0
Rejoignez-nous