2009-01-23 7 views
2

J'espère que quelqu'un peut vous aider! J'ai un contrôle d'utilisateur qui a un gridview (il y a un panneau de mise à jour dans l'UC)GridView .DataBind RowDataBound ne pas tirer

J'utilise cet UC sur 2 pages différentes - sur les deux pages, l'UC est sur une tabulation (ajax tabpanel) avec l'onglet étant à l'intérieur d'un panneau de mise à jour.

sur 1 page, lorsque j'utilise le .DataBind() (pas le chargement initial), il déclenche l'événement RowDataBound et la grille est terminée correctement. MAIS sur la deuxième page (MÊME CODE EXACT !!), le .DataBind ne déclenche pas l'événement RowDataBound et la source de données n'est pas liée/rafraichie. des idées pour lesquelles cela arriverait?

Répondre

0

Vérifiez d'abord si la mise en cache est activée (sur le serveur). J'utiliserais également des points d'arrêt pour déterminer si l'application entre dans l'événement Page_Load. Si votre mise en cache est activée, le navigateur mettra en cache et n'utilisera pas Page_Load, et par conséquent n'utilisera pas DataBind().

espérons que cette aide

2

L'événement RowDataBound ne se déclenche que lorsque les données du GridView change au cours de la publication. L'événement est court-circuité pour ne pas générer à nouveau les mêmes données inutilement. Utilisez l'événement RowCreated pour manipuler le code HTML: il se déclenche à chaque publication, que les données aient été modifiées ou non.

0

je me suis résolu en mettant la ligne de code

(TabContainer1_ActiveTabChanged(TabContainer1, null);) 

en cas Page_Load, pas !IsPostback événement

protected void Page_Load(object sender, EventArgs e) 
    Page.Title = ConfigurationManager.AppSettings["PageTitle"].ToString().Trim() + " Project Type"; 

    if (!IsPostBack) 
    { 
     if (Request.Params["stidx"] != null && Request.Params["stidx"].ToString().Trim() != "") 
     { 
      if (Request.Params["stidx"].ToString().Trim() == "0") //have to make project type selected in left 
      { 
       NullAllDate_Except_ProjectType(); 

       TabContainer1.ActiveTabIndex = 0; 

       LeftBar.var_data_to_show = ""; 
      } 
      else if (Request.Params["stidx"].ToString().Trim() == "1") //have to make Modules selected in left 
      { 
       NullAllDate_Except_Module(); 

       TabContainer1.ActiveTabIndex = 1; 

       LeftBar.var_data_to_show = ""; 
      } 
      else if (Request.Params["stidx"].ToString().Trim() == "2") //have to make Activity selected in left 
      { 
       NullAllDate_Except_Activity(); 

       TabContainer1.ActiveTabIndex = 2; 

       LeftBar.var_data_to_show = ""; 
      } 
      else if (Request.Params["stidx"].ToString().Trim() == "3") //have to make Systems selected in left 
      { 
       NullAllDate_Except_Systems(); 

       TabContainer1.ActiveTabIndex = 3; 

       LeftBar.var_data_to_show = ""; 
      } 
      else if (Request.Params["stidx"].ToString().Trim() == "4") //have to make Module Headers selected in left 
      { 
       NullAllDate_Except_ModuleHeaders(); 

       TabContainer1.ActiveTabIndex = 4; 

       LeftBar.var_data_to_show = ""; 
      } 
      else 
      { 
       NullAllDate_Except_ProjectType(); 

       LeftBar.var_data_to_show = ""; 
      } 
     } 
     else 
     { 
      NullAllDate_Except_ProjectType(); 

      LeftBar.var_data_to_show = ""; 
     } 

    } 

    if (IsPostBack) 
    { 
     if (MyScriptManager.IsInAsyncPostBack) 
     { 
      //LeftBar.var_data_to_show = true; 
      LeftBar.var_data_to_show = GetModuleName(TabContainer1.ActiveTabIndex.ToString()); 
     } 
    } 

    TabContainer1_ActiveTabChanged(TabContainer1, null); //this is required here, otherwise onrow databound is not working on !Postback 
} 
Questions connexes