DropDownList SelectedIndexChanged problem [Résolu]

Signaler
Messages postés
154
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
22 août 2007
-
Messages postés
154
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
22 août 2007
-
Bonjour...

Je vous explique mon problème...
Sur une page, j'ai un dropdownlist, une "datagrid" (infragistics)... et quelque autre truc non important pour mon problème..

La "DataGrid" est un UserControl... Elle utilise son ID pour savoir quoi charger...

je voudrais que lorsque je change de selection dans mon dropdownlist, je charge une aurte grille..
Le problème est que pour que toute mes fontions de la grille (Fonction Ajax) du genre paging, filtering, sorting
fonctionne, il faut que toute la grille soit chargée lors du Page_Init..

Monproblème est que l'événement SelectedIndexChanged de mon dropdownlist  est déclanché trop tard....

voici le squelette de ma page et de mon usercontrol.... merci encore pour votre aide..

Mon user control:

public partial class WebControl_WebGrid : System.Web.UI.UserControl
{
    protected void Page_Init(object sender, EventArgs e)
    {
        this.UltraWebGrid.InitializeDataSource += new Infragistics.WebUI.UltraWebGrid.InitializeDataSourceEventHandlerUltraWebGrid_InitializeDataSource);
        this.UltraWebGrid.InitializeLayout += new Infragistics.WebUI.UltraWebGrid.InitializeLayoutEventHandler(UltraWebGrid_InitializeLayout);
        this.UltraWebGrid.InitializeRow +=new Infragistics.WebUI.UltraWebGrid.InitializeRowEventHandler(UltraWebGrid_InitializeRow);
    }



    protected void UltraWebGrid_InitializeDataSource(object sender, Infragistics.WebUI.UltraWebGrid.UltraGridEventArgs e)
    {
        LoadGrid();



        this.UltraWebGrid.Browser = Infragistics.WebUI.UltraWebGrid.BrowserLevel.Xml;
        this.UltraWebGrid.DisplayLayout.LoadOnDemand = Infragistics.WebUI.UltraWebGrid.LoadOnDemand.Xml;
        this.UltraWebGrid.DisplayLayout.Pager.AllowPaging = true;
        this.UltraWebGrid.DisplayLayout.Pager.PageSize = 100;
    }



    protected void UltraWebGrid_InitializeLayout(object sender, Infragistics.WebUI.UltraWebGrid.LayoutEventArgs e)
    {
             //ICI je traite les collone que je veux montrer ou pas...
             //active le filtering
    }
}


Ma Page:


public partial class Statistics_Extract_Default : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)
    {
     
        this.cboLists.SelectedIndexChanged +=new EventHandler(cboLists_SelectedIndexChanged);
    }
   
    protected void cboLists_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
           this.WebGrid.ID = "stat" + this.cboLists.Text;
        }
    }
}

6 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

j'ai survolé le problème, mais je pense que lorsque tu fais ton selectedindexchanged tu devrais faire un reponse.redirect sur la meme page avec l'id de la grid que tu veux, puis lors du init tu affiches la grid que tu as trouvé dans une variable session ou en querystring.

<hr />Cyril - MVS - MCP
Messages postés
154
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
22 août 2007

je suis d'accord... mais alors... ca sert à quoi le dropdownlist avec un autopostbac?? si ce n'est justement à faire ce que je voudrais... donc à connaitre la valeur du dropdown avant même de commencer à construire la page...


j'ai un peut de peine à comprendre... l'ASP.NET...


mais bon... je vais faire comme tu le dis.. ce qui me dérange, c'est comme la construction de ma grille a déjà eu lieu, je vais le faire 2 fois.. et c'est des procédure stockée assez longue.. (c'est pour construire des grille de statitistique avec des recherche dans plusieures tables, et tou ca me retourne déjà entre 3000 et 4000 lignes..alors que le projet n'est qu'au début...


donc faire 2 fois ce genre de  manip double le temps... et c'est vite chiant d'attendre...

merci encore
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
if not page.ispostback te permet de savoir si la page vient d'un postback ou non ... :-)

mais tu as un plein d'autre solutions pour contourner ce problème comme binder tous les controles dans le pre-render ...

<hr />Cyril - MVS - MCP
Messages postés
154
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
22 août 2007

et le prerender à lieu quand? car si je ne charge pas ma crie au moment du Init... les fonctions Ajax de cette grille ne fonctionne plus...
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
page_preinit
page_init
page_preload
page_load
--> postback des contrôles
page_prerender

Aprés je ne connais pas la grille que tu utilises mais je passe trés souvent dans le prerender quand j'ai besoin de charger des données aprés un postback. Le response.redirect permet s'il est bien utilisé de faire la même chose et en plus si l'on rafraichis la page en tapant sur F5 la page ne sera pas renvoyé avec toutes les données mais comme étant "propre" :-)

<hr />Cyril - MVS - MCP
Messages postés
154
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
22 août 2007

je vois...
la grille que j'utilise vient d'Infragistics..
elle à plein d'option Ajax (load on dema)
du genre...
changement de page de la grille pour les grille avec paging..
filtrage des donnée.. (en function des collones)
sorting...

au début je chargeais la grille au moment du load... mais les fonction ajax ne marchais pas...
me renvoyais une grille vide..

donc j'ai demandé à infragidtics,, il m'on dis qu'il fallait faire tout avant le load.. donc dans le init..
toutes mes fonction ajax marche nickel... il me reste plus que ce petit problème..

je vais essayer tes différente solutions... on verras..