Изменить Session / ViewState по нажатию кнопки - PullRequest
0 голосов
/ 12 марта 2012

я снова,

У меня есть текущая страница с пользовательским контролем, в котором перечислены здания.

Вот скриншот: http://i40.tinypic.com/2eusoyt.png

Теперь мой наставник попросил меня создать кнопку, которая позволяет пользователю отображать свойства в 2 столбцах.

Как я это попробовал? Я попытался поместить следующее в мою Page_load:

            if (ViewState["numberOfColumns"] != null)
            {
                numberOfColumns= Int32.Parse(ViewState["numberOfColumns"].ToString());

            }
            else
            {
                ViewState["numberOfColumns"] = 1;
                numberOfColumns= 1;
            }

Затем за видом кнопки я поставил этот код:

        protected void btnView_Click(object sender, EventArgs e)
    {
        switch(numberOfColumns)
        {
            case 1:
                numberOfColumns= 2;
                ViewState["numberOfColumns"] = numberOfColumns;

                break;
            case 2:
                numberOfColumns= 1;
                ViewState["numberOfColumns"] = numberOfColumns;
                break;
        }

    }

Но, как я уже догадался, для этого метода требуется одна обратная передача для установки переменной сеанса и другая для выполнения загрузки страницы с самым последним значением.

Я знаю, что должен быть "правильный способ" сделать это, но я не могу его найти.

Любые прямые, которые вы, ребята, могли бы указать мне, будут с благодарностью.

Заранее спасибо, Кристоф

1 Ответ

0 голосов
/ 13 марта 2012

Хорошо,

Вот как я это сделал.

Метод построения вывода пользовательского элемента управления был вызван сразу после приведенного выше фрагмента. Он называется «GetProperties ()».

Таким образом, проблема заключалась в том, что в соответствии с циклом страниц .net сначала выполняет Page_Load, а в качестве последнего - управляющие события.

Итак, я впервые поместил вызов getProperties () (когда IsPostback = false) в if. Поэтому, когда вы заходите на страницу один раз, она загружает метод, а после этого уже нет.

Итак, я помещаю метод methodcall в свою кнопку, потому что при нажатии кнопки IsPostback = true.

Это сработало. Фрагменты ниже: защищенная пустота Page_Load (отправитель объекта, EventArgs e) { // некоторые общие вещи

            if (!IsPostBack)
            {
                ViewState["kolommen"] = 1;
                AantalKolommen = 1;
                GetProperties(_tkth, _categorie, _verkochtverhuurd);
            }
        }

И за кнопкой я сделал следующее:

        protected void btnView_Click(object sender, EventArgs e)
    {
        switch (Int32.Parse(ViewState["kolommen"].ToString()))
        {
            case 1:
                AantalKolommen = 2;
                ViewState["kolommen"] = 2;
                break;
            case 2:
                AantalKolommen = 1;
                ViewState["kolommen"] = 1;
                break;
        }
        GetProperties(_tkth, _categorie, _verkochtverhuurd);
    }

Это работает как шарм. Альт, я все еще хотел бы знать, если это

...