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)
Jusque là, je pense avoir saisi la différence entre les 2 modes.
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();
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 !![]()
Partager