GridView .DataBind RowDataBound не запускается - PullRequest
2 голосов
/ 24 января 2009

Я надеюсь, что кто-то может помочь! у меня есть пользовательский элемент управления с сеткой (в UC есть панель обновления)

Я использую этот UC на 2 разных страницах - на обеих страницах UC находится на вкладке (ajax tabpanel), причем вкладка находится внутри панели обновлений.

на 1 странице, когда я использую .DataBind () (не начальную загрузку), он запускает событие RowDataBound, и сетка завершается правильно.

НО на 2-й странице (ЖЕ ТОЧНЫЙ КОД !!) .DataBind НЕ запускает событие RowDataBound, и источник данных не связан / не обновлен. есть идеи, почему это произойдет?

Ответы [ 3 ]

2 голосов
/ 26 октября 2011

Событие RowDataBound возникает только при изменении данных GridView во время обратной передачи. Событие имеет короткое замыкание на скорость, поэтому оно не создает ненужные повторные данные. Вместо этого используйте событие RowCreated для манипулирования HTML - оно запускается при каждой обратной передаче независимо от того, изменились ли данные.

0 голосов
/ 06 декабря 2012

Я решил, поставив строку кода

(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
}
0 голосов
/ 24 января 2009

Сначала проверьте, включено ли кэширование (на сервере). Я бы также использовал точки останова, чтобы отследить, попадает ли приложение в событие Page_Load.

Если ваше кэширование включено, браузер будет кэшировать и не использовать Page_Load и, следовательно, не использовать DataBind ().

надеюсь, это поможет

...