单击按钮更改会话/ ViewState

时间:2012-03-12 12:42:52

标签: c#-4.0 user-controls postback lifecycle

再次,我,

我有一个当前页面,其中包含列出建筑物的用户控件。

以下是截图: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;
        }

    }

但是我猜这个方法需要一个回发来设置sessionvariable,另一个回复来执行带有最新值的pageload。

我知道应该有“正确的方法”这样做,但我找不到它。

任何直接的你们都可以指出我会非常感激。

提前致谢,Christophe

1 个答案:

答案 0 :(得分:0)

好的,

这就是我做到的。

构建用户控件输出的方法直接在上面的代码段之后调用。它被称为“GetProperties()”。

所以问题是/是根据页面循环,.net首先执行Page_Load,并且最后执行控制事件。

所以我所做的是在if中第一次调用getProperties()(当IsPostback = false时)。因此,当您访问该页面一次时,它将加载该方法,之后不再加载。

所以,然后我将methodcall放在我的按钮中,因为当你点击按钮IsPostback = true时。

这很有用。下面的片段:             protected void Page_Load(object sender,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);
    }

这就像一个魅力。但是,我还是想知道这是不是