Probleme refresh gridview

Signaler
Messages postés
3
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
2 janvier 2007
-
Messages postés
3
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
2 janvier 2007
-
Bonjour,
etant debutant, j'utilise un datasource et une gridview. jusque là, tout va tre bien. Ensuite, pour filtrer mon gridview, j'ai utilisé un txtbox dans lequel je saisie une lettre. Je modifi donc le selectcommand de mon datasource; mais voilà, quand je veux ensuite "editer" pour mettre à jour une ligne, il me recharge le gridview avec la source de données  d'origine. c'est comme si il ne gardait pas en memoire mon filtre. Je pense que cela est lié au mode déconnecté, mais comment puis je faire pour garder mon filtre? Quelqu'un a t'il une idée?
Merci

2 réponses

Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
13 juillet 2007
1
Bonjour,

Je suppose que tu mets à jour ton filtre dans ton évenement selectcommand.
Le problème c'est que lorsque tu repasses en mode visu, ton événement n'est pas reéxécuté, donc ton filtre n'est pas réappliqué.
Il te faut donc mettre à jour ton filtre ailleurs et persister l'information comme quoi ta grille est filtrée.

Copie moi ton bout de code si tu veux.

Bon courage!

<hr />Azra(Florent) - MCSD.NET - MCT
Messages postés
3
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
2 janvier 2007

Merci de ton aide. Voici mon code:



protected



void
Page_Load(

object
sender,

EventArgs
e){


MasterPage
.setActiveMenu(2, 4);}


protected



string
FilterCountry(){


StringBuilder
sb =

new



StringBuilder
(

string
.Empty);


string
strOperator =

string
.Empty;


string
strQuery =

string
.Empty;

sb.Append(


"SELECT COUNTRY_ID, COUNTRY_NAME, COUNTRY_KEY FROM COUNTRY"
);


string
strCountry_ID = CreateQueryFilterCountry(

"COUNTRY_ID"
, txtCountryID.Text.ToUpper() );


if
(strCountry_ID!=

string
.Empty ){

strQuery = strCountry_ID;

}


string
strCountry_Name = CreateQueryFilterCountry(

"COUNTRY_NAME"
,txtCountryName.Text.ToUpper() );


if
(strCountry_Name !=

string
.Empty){


if
(strQuery !=

string
.Empty){

strQuery = strQuery +


" AND "
+ strCountry_Name;}


else
{strQuery = strCountry_Name;

}

}


if
(strQuery !=

string
.Empty)sb.Append(


" WHERE "
+ strQuery);


string
strFilter = sb.ToString();CountryDataSource.DataBind();


return
strFilter;}


protected



string
CreateQueryFilterCountry(

string
strField,

string
strValue){


if
(strValue.Trim() ==

string
.Empty){


return



string
.Empty;}


else

{







string
strQuery = strValue.Trim();


string
strInvalidChars =

"`~!@#$%^&()-_=+[{]}\\|;:<,>.*/?""
;


for
(

int
i = 0; i < strInvalidChars.Length; i++){

strQuery = strQuery.Replace(strInvalidChars.Substring(i, 1),


string
.Empty);}

strQuery = strField +


" LIKE '"
+ strQuery +

"%' "
;


return
strQuery;}

}


protected



void
btnFilterCountry_Click(

object
sender,

EventArgs
e){


string
strDataSourceID FilterCountry();strDataSourceID strDataSourceID +


" ORDER BY COUNTRY_ID ASC"
;CountryDataSource.SelectCommand = strDataSourceID;

}