Bonjour, après moulte recherche sur ce site et internet en général

j'en viens à demander directement

je cherche à créer une gridview avec un header modifié afin de filtrer les données de ma gridview par colonne, la particularité est que la table utilisée pour le gridview peut changer

le gridview reçoit les données d'une sqldatasource avec requete "select * from table"

en asp, voici le code que cela donne

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
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                                AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Firm" 
                                DataSourceID="SqlDataSource1" 
                        EmptyDataText="Pas de données pour le filtre actuel"><Columns>
                                <asp:TemplateField HeaderText="Firm" SortExpression="Firm"><EditItemTemplate><asp:Label ID="Label1" runat="server" Text='<%# Eval("Firm") %>'></asp:Label>
                                        </EditItemTemplate><HeaderTemplate><asp:TextBox ID="TextBox1" runat="server" Width="120px"></asp:TextBox><asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/img/triangle.gif" 
                                                onclick="ImageButton1_Click" />
                                            <asp:Label ID="Label3" runat="server">Firm</asp:Label>
                                        </HeaderTemplate>
                                        <ItemTemplate>
                                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Firm") %>'></asp:Label>
                                        </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Firm_Name" SortExpression="Firm_Name">
                                        <HeaderTemplate>
                                            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                                            <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/img/triangle.gif" 
                                                onclick="ImageButton2_Click" />
                                            <asp:Label ID="Label1" runat="server">Firm_Name</asp:Label>
                                        </HeaderTemplate>
                                        <ItemTemplate>
                                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("Firm_Name") %>'></asp:Label>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    </Columns><HeaderStyle HorizontalAlign="Center" />
                                </asp:GridView>
jusque là, pas de souci, tout fonctionne bien

par contre, la gridview doit pouvoir afficher non plus 1 table donnée, mais n'importe quelle table parmis environ 50

j'ai donc fait une dropdownliste qui contient le nom des tables (le probleme ne porte pas la dessus)

à l'évènement changedindex de la ddl, je tente de bind la gridview avec la nouvelle datasource, et là... c'est le drame avec le datakeynames que je n'arrive pas à changer
que ce soit avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
GridView1.DataKeyNames.SetValue("Procedure_Id", 0);
ou encore directement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
GrivdView1.DataKeyNames[0] = "Procedure_Id"
je cherche donc à changer les données de mon gridview, tout en conservant son header qui sert à filtrer (une textbox, un label pour le nom de la colonne, et un bouton qui lance l'event du filtre)

j'espere que je me suis correctement exprimé
merci d'avance