почему мой пользовательский серверный элемент управления не поддерживает информацию о состоянии просмотра? - PullRequest
0 голосов
/ 08 января 2012

Я создаю собственный серверный элемент управления. вот соответствующий элемент пользовательского управления:

    public class ManagementUserControl : UserControl
    {
        GridView _grv;

        public ManagementUserControl()
        {
            _grv = new GridView();
        }

        /// <summary>
        /// binds the grid to controls.
        /// </summary>
        public override void DataBind()
        {
            _grv.DataBind();
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (!IsPostBack)
            {
    //add controls only when is not postback
                InitializeGrid(); 
            }
        }
        void InitializeGrid()
        {
            this.Controls.Add(_grv);
        }
        [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
        public object DataSource
        {
            get { return _grv.DataSource; }
            set { _grv.DataSource = value; }
        }
    }

Я добавляю объект источника данных в код позади Default.aspx следующим образом:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<string> lst = new List<string>();
            lst.Add("test1");
            lst.Add("test2");
            lst.Add("test3");
            ucManagement.DataSource = lst;
            ucManagement.DataBind();
        }
    }

Во-первых, он работает нормально, но когда я отправляю обратно страницу, элемент управления исчезает. поэтому я проверил коллекцию Conrols в событии Load и увидел, что она пустая. хуже того, что grid.DataSource пуст при обратной передаче !! почему состояние представления сетки не поддерживается и значение источника данных теряется при обратной передаче? кстати, представление состояния не отключено нигде в файле page или web.config.

1 Ответ

0 голосов
/ 08 января 2012

найдено это на сайте asp.net. похоже ваш точный сценарий.

...