Bonjour à tous,

Je programme une application en 3 couches (données, métier, interface). Dans mon interface, j'inclue un formulaire qui contient 2 DataGridView. Ceux-ci sont connecté à un DataSet. J'ai remonté depuis la couche données 2 DataView: SOUSQUESTION et REPONSE. SOUSQUESTION est lié au DataGridView1 et REPONSE au DataGridView2.

Mais voilà mon problème. Je souhaite utiliser un filtre (propriété RowFilter sans doute) pour qu'à chaque fois qu'on clique sur une question du DataGridView1, il soit affiché les réponses associées à celle-ci dans le DataGridView2... Je pense qu'il faut utiliser l'ID de mon DataView SOUSQUESTION, mais je ne sais pas comment m'y prendre et quelle est la syntaxe pour utiliser une clé primaire d'une table comme filtre...

Couche données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
 
namespace T3_DAL_IDEC
{
    public partial class DAL_Services : Component
    {
            public DAL_Services()
            {
                InitializeComponent();
            }
 
            public DAL_Services(IContainer container)
            {
                container.Add(this);
 
                InitializeComponent();
            }
 
        #region METHODES
            public DataView ChargerTableQUESTION()
            {
                this.tbaQUESTION.Fill(this.dstCerPro.QUESTION);     //chargement de la table QUESITON
                return this.dstCerPro.QUESTION.DefaultView;         //retourne la vue chargée
            }
            public DataView ChargerTableSOUSQUESTION()
            {
                this.tbaSOUSQUESTION.Fill(this.dstCerPro.SOUSQUESTION);
                return this.dstCerPro.SOUSQUESTION.DefaultView;
            }
            public DataView ChargerTableREPONSE()
            {
                this.tbaREPONSE.Fill(this.dstCerPro.REPONSE);
                return this.dstCerPro.REPONSE.DefaultView;
            }
 
        #endregion
    }
}

Couche métier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using T3_DAL_IDEC;
 
namespace T2_BLL_IDEC
{
    public class BLL_Questionnaire
    {
        #region CHAMPS
            //Champ d'instance pour DAL_Services
            private DAL_Services DAL = null;
            //Champ vue de données
            private DataView dtvQUESTION = null;
            private DataView dtvSOUSQUESTION = null;
            private DataView dtvREPONSE = null;
 
 
 
        #endregion
        #region PROPRIETES
            //Mise à disposition de la vue
            public DataView VueQUESTION
            {
                get
                {
                    return this.dtvQUESTION;    //retourne la valeur du champ privé, à la lecture de la propriété
                }
            }
            public DataView VueSOUSQUESTION
            {
                get
                {
                    return this.dtvSOUSQUESTION;
                }
            }
            public DataView VueREPONSE
            {
                get
                {
                    return this.dtvREPONSE;
                }
            }
 
 
 
        #endregion
            public BLL_Questionnaire()
            {
                this.DAL = new DAL_Services();
            }
        #region METHODES
            //méthode permettant l'affectation de la vue par defaut de la table
            public void ChargerVueQUESTION()
            {
                //appel de la fonction de chargement de la table QUESTION dans DAL
                this.dtvQUESTION = this.DAL.ChargerTableQUESTION(); //et affectation de sa vue par défaut au champ privé
            }
            public void ChargerVueSOUSQUESTION()
            {
                this.dtvSOUSQUESTION = this.DAL.ChargerTableSOUSQUESTION();
            }
            public void ChargerVueREPONSE()
            {
                this.dtvREPONSE = this.DAL.ChargerTableREPONSE();
            }
 
 
 
        #endregion
    }
}
Couche interface
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using T2_BLL_IDEC;
 
namespace T1_UIL_IDEC
{
    public partial class frmQuestionnaire : Form
    {
        #region CHAMPS
            //Champ d'instance pour BLL_Questionnaire
            private BLL_Questionnaire QST = null;
 
        #endregion
            public frmQuestionnaire()
            {
                InitializeComponent();
                this.QST = new BLL_Questionnaire();
            }
        #region METHODES
            private void ChargementDonnees()
            {
                //Appel du chargement de la vue dans BLL
                this.QST.ChargerVueQUESTION();
                this.QST.ChargerVueSOUSQUESTION();
                this.QST.ChargerVueREPONSE();
 
            }
            private void LiaisonDonnees()
            {
                //Liaison des données au BindingSource
                this.bdsQuestion.DataSource = this.QST.VueQUESTION;
                this.navQuestions.BindingSource = this.bdsQuestion; //et liaison du bindingsource à la navigation
 
                //Liaison des données des contrôles
                this.lblQuestion.DataBindings.Add("Text", this.bdsQuestion, "Que_Libelle");
                this.dgvSousQuestion.DataSource = this.QST.VueSOUSQUESTION;
                this.dgvReponse.DataSource = this.QST.VueREPONSE;
 
            }
        #endregion
 
            private void frmQuestionnaire_Load(object sender, EventArgs e)
            {
                this.ChargementDonnees();
                this.LiaisonDonnees();
            }
    }
}
Dans la couche métier on voit la méthode ChargerVueREPONSE() et je voudrais ajouter un filtrer du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
            public void ChargerVueREPONSE()
            {
                this.dtvREPONSE = this.DAL.ChargerTableREPONSE();
                this.dtvREPONSE.RowFilter = "ID_SousQuestion";
            }
Biensûr, ID_SousQuestion ne se trouve pas dans dtvREPONSE, mais dans dtvSOUSQUESTION. Ma question est donc, comment récupérer cet ID ? J'ai beaucoup cherché avant de venir poser ici...