Appliquer un filtre sur plusieurs tables

Signaler
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
-
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
-
bonjour,
quelle méthode me permettera de filtrer des champs des tballes,
c'est a dire en cochant des checkbox j'affiche ce que j'ai ckocher même s'ils sont pas dans la même table.
j'arrive a le faire avec une seul table mais pas plusieurs tables.
merci je suis bloqué.

14 réponses

Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Salut,

Peut tu être un peu plus précis, donner tes tables ou un peu de code ?
Merci

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
désolé, dataGridView
je pense que j'ai mal developpé mon probléme.
j'ai 4 dataGridView T1,T2,T3,T4, chaque tables posséde plusieurs champs...
comment je pourrai filtrer tout les informations de mes 4 tables,
c'est a dire, j'ai des checkbox qui corespondent aux champs de mes table,
mon but c'est d'afficher les champs que j'ai choisis même si'ls sont pas dans la même dataGridView.
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Salut,

Comment relie tu tes DataGridView à ta base de donnée : avec un composant ou en code-behind ?
Je suppose que chaque table correspond à un DataGridView, tu n'as qu'a tester tes checkbox et construire ensuite tes DataGridView et spécifiant tes requêtes selon les checkbox.
Si tu ne comprend pas donne un peu de code : sur ton test des checkbox et  ta connection entre les DataGridView et ta base
@Pluche

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
merci les amis,
les DataGridView sont conect"s par visual studio 2005 donc c'est pas un code behind,
j'ai fais ca pour une seul table T1
private void projet_Load(object sender, EventArgs e)
{
this.T1TableAdapter.Fill(this.testDataSet.T1);

}


private void appliquer_filtrage_colonne()
{
if (CheckBox_1.Checked)
{
dataGridView1.Columns[1].Visible = true;
}
else
{
dataGridView1.Columns[1].Visible = false;
}
if (CheckBox_2.Checked)
{
dataGridView1.Columns[2].Visible = true;
}
ca marche j'arrive à applique le filtre.

mon probleme il faut que j'arive a filtrer tt mes tables, sachant que j'ai 200 champs et 10 table , je vois comment appliquer ce filter.

merci
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Salut,

Petite question encore : si tu as 200 champs est ce que tu as 200 CheckBox ??

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
oui
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Watcha
Tu vas te marrer !! Je vais réflechir a un moyen simple de gérer ça ce weekend mais je pense que tu va devoir adopter une autre solution que les CheckBox. Pour le moment je pencherai vers du drag'n'drop ou moins complexe un textarea dans lequel l'utilisateur ajoute les champs qu'il veut voir apparaître et une requete dynamique qui interroge ta base selon les champs voulu. J'ai ma petite idée je te tiens au jus dès que c'est plus concret.
@Pluche

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
merci baucoup...
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Salut,

Alors voilà une solution :

Tout d'abord un CheckBoxList plus facile à parcourir pour trouver les cases cochées ou non. Puis, lors du clic sur le boutton de validation, tu construit ta requete à ta base de données dynamiquement et tu la relie à ton DataGridView.

Pour commencer il faut ajouter les using :
using

System.Data.SqlClient;
using

System.Data.Common;
using

System.Data.SqlTypes;

Tu creer une CheckBoxList (qui, soit dit en passant, peux se construire en lien avec une base de donnees, dans ce cas tu peux construire une table "Champs" avec le nom du champ (ex:bidule_id) et un libelle qui s'affichera dans la CheckBoxList) et un bouton. La valeur de chaque Item de ta CheckBoxList doit absolument etre le nom de ton champ car c'est cette valeur que tu va récupérer et non son texte pour construire ta requete.
<

asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
>

<asp:ListItem
Text="1"
Value="val1">

</asp:ListItem>

<asp:ListItem
Text="2"
Value="val2">

</asp:ListItem>

<asp:ListItem
Text="3"
Value="val3">

</asp:ListItem>

<asp:ListItem
Text="4"
Value="val4">

</asp:ListItem>

<asp:ListItem
Text="5"
Value="val5">

</asp:ListItem>

<asp:ListItem
Text="6"
Value="val6">

</asp:ListItem>

</asp:CheckBoxList>

<asp:Button
ID="Button1"
runat="server"
Text="Valider"
onclick="Button1_Click"
/>

Lors du clic sur ton bouton tu te connecte à ta base, tu construit ta requete avec les champs cochés et tu la relie à ton DataGridView.
protected

void Button1_Click(
object sender,
EventArgs e){

      ConnectionStringSettings cfg =
ConfigurationManager.ConnectionStrings[
"Ta chaine de connexion"];

      SqlConnection Conn =
new
SqlConnection(cfg.ConnectionString);      Conn.Open();

      //Debut de ta requete

      string req =
"Select ";

      for (
int i = 0; i < CheckBoxList1.Items.Count; i++)      {

            if (CheckBoxList1.Items[i].Selected ==
true)            {

               //si coch‚ devient un parametre               req += CheckBoxList1.Items[i].Value.ToString();

               req +=

", ";            }

      }

//fin de la requetereq +=

"from Tabl1, Tabl2, ... where ...";

SqlCommand Cmd =
new
SqlCommand(req, Conn);Cmd.CommandType = System.Data.

CommandType.Text;

SqlDataAdapter DA =
new
SqlDataAdapter(Cmd);

DataSet dt =
new
DataSet(
"SqlDataSource");DA.Fill(dt,req);

//remplissage du DataGridViewDataGridView1.DataSource = dt;

DataGridView1.DataBind();

Conn.Close();

}

Voilà, si tu as des questions n'hésite pas.
@Pluche

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
merci,
je vais regarder ca
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
ce code je doix l ecrire dans quelle partie :

asp:CheckBoxListID="CheckBoxList1"runat="server">
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
en fait je travail pas avec le WEB .
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Salut,

Oui excuse moi j'avais completement zappée ça !! Pour les WindowsForms tu as les CheckedListBox en rempacement, tu l'installe avec ta ToolBox, le seul problème c'est que tu ne peux pas spécifier un libellé et une valeur. Tu sera oblige d'afficher le nom de ton champ en brut pour que ça reste simple à gerer. Pour accéder ensuite à la valeur voici une petite explication http://msdn.microsoft.com/en-us/library/e954th47.aspx . Si tu bloque dit moi je reessayerai avec une WindowsForm.
@Pluche

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
merci ofonadroite,
est ce qu etu pourra ressayer avec WindosForm stp,
j'ai essayé ca me donne rien.
merci