我有一个当前页面,其中包含列出建筑物的用户控件。
以下是截图: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
答案 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);
}
这就像一个魅力。但是,我还是想知道这是不是