2009-01-23 46 views
2

我希望有人可以帮忙!我有一个用户控件,它有一个gridview(有一个在UC更新面板)GridView .DataBind RowDataBound没有触发

我在两个页面上使用此UC在两个不同的页面上 - ,UC在一个选项卡(ajax tabpanel)与该选项卡位于更新面板内。

在1页上,当我使用.DataBind()(不是初始加载)时,它触发RowDataBound事件并正确完成网格。

但是在第二页上(相同的代码!!),.DataBind不会触发RowDataBound事件并且数据源未被绑定/刷新。任何想法为什么会发生?

回答

0

首先检查是否启用了缓存(在服务器上)。我还会使用断点来跟踪应用程序是否进入Page_Load事件。

如果启用了缓存,浏览器将缓存并且不使用Page_Load,因此不使用DataBind()。

希望这有助于

2

的RowDataBound事件仅触发时回发期间GridView的数据变化。该事件对于速度而言是短路的,因此它不会不必要地重新生成完全相同的数据。使用RowCreated事件来处理HTML,而不管数据是否发生变化,它会在每次回发时触发。

0

我有通过把代码

(TabContainer1_ActiveTabChanged(TabContainer1, null);) 

线在Page_Load事件,而不是在!IsPostback事件解决

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 
}