Bonjour à tous,


Je débute actuellement dans l'asp.NET et je m’intéresse en ce moment au GridView.
J'ai un peu étudier le comportement des liaisons de données que propose ce contrôle et j'ai vu qu'il à 2 façons principales de liées les données à ce controle.

1°) On créer une source de donnée SqlDataSource coté dans le front en lui donnant un ID(c'est à dire dans la page aspx elle-même.) Et ensuite on précise au controle GridView, avec l'attribut DataSourceID le même ID qu'on a attribué à la source de donnée.

Exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<%-- La source de donnée qui appelle une procédure stockée --%>
<asp:SqlDataSource ID="idSourceDonnee"
         ConnectionString="<%$ ConnectionStrings:KelassurConnectionString1 %>"
         SelectCommand="usp_GetListePartenaires"
            runat="server" SelectCommandType="StoredProcedure" /> 
 
        <%--  Rendu visuel de la GridView Partenaire avec la liaison à la source de donnée--%>
        <asp:GridView ID="lstPartenaires" runat="server" DataSourceID="idSourceDonnee" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="PartenaireID" Width="292px" ForeColor="Black" GridLines="Horizontal">

2°) Sinon on peux écrire cela dans le fichier .cs associé à la page web aspx (que l'on appelle behind il me semble)

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
//Classe permettant d'effectuer l'appel à la procédure stockée dans un fichier .dbml
 ptrns = DataManager.GetListePartenaires().ToList();
 
//Possibilité de filtrage (on suppose que les champs sont présent sur la page web afin de pouvoir renseigner les différents filtres
var data = (from p in ptrns
                       where ((RaisonSocialeFiltre == null) || ((!string.IsNullOrEmpty(p.RaisonSociale)) && (Regex.IsMatch(p.RaisonSociale, RaisonSocialeFiltre, RegexOptions.IgnoreCase))))
                       && ((EtatFiltre == null) || (p.EtatPartenaireID == (int)EtatFiltre))
                       && ((QualiteFiltre == null) || (p.QualitePartenaireID == (int)QualiteFiltre))
                       && ((DepartementFiltre == null) || ((p.CodePostal != null) && (p.CodePostal.ToString().PadLeft(5, '0').Substring(0, 2) == DepartementFiltre)))
                       && ((VilleFiltre == null) || ((!string.IsNullOrEmpty(p.Ville)) && (Regex.IsMatch(p.Ville, VilleFiltre, RegexOptions.IgnoreCase))))
                       select p).ToList();
 
           //Liaison des nouvelles données filtrées au controle GridView
            lstPartenaire.DataSource = data;
            lstPartenaire.DataBind();
Jusque là, je pense avoir saisi la différence entre les 2 modes.

Cependant, j'ai une question assez banal : Est-il possible d'effectuer une opération de filtrage pour la 1er méthode (comme celle indiqué dans la 2eme méthode par exemple) ou alors faut-il indiquer une autre source de données avec une autre procédure stockée qui se chargera d'effectuer le filtrage et changer la propriété DataSourceID associé à l’événement voulu (par exemple lors d'un clic sur un bouton radio) ?

Car malheureusement, il est impossible d'avoir les 2 propriétés sur la même GridView.

ça peut paraître un peu bête comme question mais cela fait 2 jours que je tente désespérément de trouver une réponse sur le net, et je n'ai aucune information de ce coté.

Merci d'avance !