2009-01-23 75 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 
}