Salut à tous,
Depuis quelques jours j'ai un problème que je ne sais pas régler.
J'ai un TextBox qui me permet de saisir du un nom de client et de faire une recherche dans la base de données lorsque je clique sur le Button. C'est donc le Button qui lance l'évènement qui va s'occuper de rechercher dans la base de données. Mais comme c'est pas la responsabilité du Button de faire ça lui-même, j'ai créé une méthode private SqlDataReader SearchGrid(string str) qui quand elle est appelé par l'évènement Click sur le bouton me renvoi mon SqlDataReader que je charge dans le DataSource de mon GridView et je fini avec un DataBind. J'espère avoir été assez précissinon voilà le lien qui m'à inspiré sauf qu'au lieu d'utiliser une DropDownlist j'utilise un TextBox C# DetailsView Editing
Pour corser le tout j'ai lié un DetailsView qui apparait lorsque je clique sur le lien séléctionner de chaque enregistrement.
Mon gros problème est que j'ai passé les paramètres du GridView sur
Et j'ai aussi modifié SortExpression de mes deux BoundField car on peut les trier par ID ou par Nom, donc quand je click sur l'un ou l'autre il me trie en Ascending et en Descending.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AllowSorting="True" OnSorted="GridSearch_Sorted"
Par contre je n'arrive pas à récupérer les valeur de mes BoundField.SortExpression pour pouvoir effectuer le trie suivant le lien qu'on clique et je ne vois vraiment pas comment faire
Si quelqu'un pouvait m'aider je serais vraiment heureu
Voici mon code en détail :
Et la partie C#
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 <table> <tr> <td>Nom : </td> <td><asp:TextBox ID="SearchTxt" runat="server"></asp:TextBox></td> </tr> <tr> <td colspan="2"><asp:Button ID="SearchBtn" runat="server" Text="search" OnClick="SearchBtn_Click"/></td> </tr> </table> <asp:GridView ID="GridSearch" runat="server" AllowSorting="True" DataKeyNames="ID_CLIENT_GC" AutoGenerateColumns="False" OnSelectedIndexChanged="GridSearch_SelectedIndexChanged" OnSorting="GridSearch_Sorted" OnSorted="GridSearch_Sorted" EmptyDataText="Aucun resultat" Width="427px"> <Columns> <asp:BoundField DataField="ID_CLIENT_GC" HeaderText="ID CLIENT" ReadOnly="True" SortExpression="ID_CLIENT_GC" /> <asp:BoundField DataField="NOM_CLIENT_GC" HeaderText="NOM CLIENT" SortExpression="NOM_CLIENT_GC" /> <asp:CommandField ShowSelectButton="True" /> </Columns> </asp:GridView> <br /> <br /> <asp:DetailsView ID="DetailsSearch" runat="server" AutoGenerateRows="False" DataKeyNames="ID_CLIENT_GC" DataSourceID="SqlSearch" Height="50px" Width="125px"> <Fields> <asp:BoundField DataField="ID_CLIENT_GC" HeaderText="ID_CLIENT_GC" InsertVisible="False" ReadOnly="True" SortExpression="ID_CLIENT_GC" /> <asp:BoundField DataField="NOM_CLIENT_GC" HeaderText="NOM_CLIENT_GC" SortExpression="NOM_CLIENT_GC" /> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> </Fields> </asp:DetailsView> <asp:SqlDataSource ID="SqlSearch" runat="server" ConnectionString="<%$ ConnectionStrings:GRA_TEST_DEZIGNConnectionString %>" DeleteCommand="DELETE FROM [GRA_CLIENT] WHERE [ID_CLIENT_GC] = @ID_CLIENT_GC" InsertCommand="INSERT INTO [GRA_CLIENT] ([NOM_CLIENT_GC]) VALUES (@NOM_CLIENT_GC)" SelectCommand="SELECT [ID_CLIENT_GC], [NOM_CLIENT_GC] FROM [GRA_CLIENT] WHERE ([ID_CLIENT_GC] = @ID_CLIENT_GC)" UpdateCommand="UPDATE [GRA_CLIENT] SET [NOM_CLIENT_GC] = @NOM_CLIENT_GC WHERE [ID_CLIENT_GC] = @ID_CLIENT_GC"> <SelectParameters> <asp:ControlParameter ControlID="GridSearch" Name="ID_CLIENT_GC" PropertyName="SelectedValue" Type="Int32" /> </SelectParameters> <DeleteParameters> <asp:Parameter Name="ID_CLIENT_GC" Type="Int32" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="NOM_CLIENT_GC" Type="String" /> <asp:Parameter Name="ID_CLIENT_GC" Type="Int32" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="NOM_CLIENT_GC" Type="String" /> </InsertParameters> </asp:SqlDataSource> <asp:Label ID="Label1" runat="server" Text=""></asp:Label>Voilà si des fois ça en inspire plus d'un. Merci pour votre aide
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 //Constante pour la chaine de connexion const string C_STRING = "machaine de connexion"; protected void DetailsSearch_ItemUpdated(Object sender, System.Web.UI.WebControls.DetailsViewUpdatedEventArgs e) { GridSearch.DataBind(); } protected void DetailsSearch_PageIndexChanging(object sender, DetailsViewPageEventArgs e) { GridSearch.DataBind(); } protected void GridSearch_SelectedIndexChanged(object sender, EventArgs e) { DetailsSearch.ChangeMode(DetailsViewMode.Edit); } protected void GridSearch_PageIndexChanged(object sender, EventArgs e) { DetailsSearch.ChangeMode(DetailsViewMode.ReadOnly); } protected void GridSearch_Sorted(object sender, EventArgs e) { DetailsSearch.ChangeMode(DetailsViewMode.Edit); Label1.Text = "Trie"; } /************************************************************************************/ //Fonction hasardeuse mais qui marche à condition de pas mettre de try catch :-) private SqlDataReader SearchGrid(string str) { //La chaine de la requête qui va permettre la recherche string sqlSearch = "SELECT * FROM GRA_CLIENT WHERE NOM_CLIENT_GC LIKE'" + str + "%' ORDER BY NOM_CLIENT_GC"; SqlCommand clientSqlCommand; SqlDataReader clientSqlDataReader; SqlConnection clientSqlConnection = new SqlConnection(); GridView searchClientGrid = new GridView(); clientSqlConnection.ConnectionString = C_STRING; clientSqlCommand = new SqlCommand(sqlSearch, clientSqlConnection); clientSqlConnection.Open(); clientSqlDataReader = clientSqlCommand.ExecuteReader(); return clientSqlDataReader; } protected void SearchBtn_Click(object sender, EventArgs e) { GridSearch.DataSource = SearchGrid(SearchTxt.Text); GridSearch.DataBind(); }
Partager