我在保留我在scoop顶部定义的字符串变量时遇到问题,每次页面加载时字符串值变为null。下面是代码的片段:
public partial class Caravan_For_Sale : System.Web.UI.Page
{
string check;
PagedDataSource pds = new PagedDataSource(); //paging
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
DataTable dt = null;
switch (check)
{
case "0-1500":
break;
case "1500-2000":
dt = caravans.GetFilterbyPrice1();
break;
case "2000+":
break;
default:
dt = caravans.GetAllCaravans();
break;
}
// DataTable dt = caravans.GetAllCaravans();
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = 3;//add the page index when item exceeds 12 //Convert.ToInt16(ddlPageSize.SelectedValue);
pds.CurrentPageIndex = CurrentPage;
DataList1.RepeatColumns = 3; // 4 items per line
DataList1.RepeatDirection = RepeatDirection.Horizontal;
DataList1.DataSource = pds;
DataList1.DataBind();
lnkbtnNext.Enabled = !pds.IsLastPage;
lnkbtnPrevious.Enabled = !pds.IsFirstPage;
doPaging();
}
protected void lnkPrice2_Click(object sender, EventArgs e)
{
LinkButton _sender = (LinkButton)sender;
check = _sender.CommandArgument;
// items["test"] = test;
DataTable dt = caravans.GetFilterbyPrice2();
if (dt.Rows.Count < 3)
{
lnkbtnNext.Enabled = false;
lnkbtnPrevious.Enabled = false;
}
CurrentPage = 0;
BindGrid();
}
protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName.Equals("lnkbtnPaging"))
{
CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
BindGrid();
}
}
每次dlPaging_ItemCommand变为活动状态(页面加载)时,字符串检查将变为null。任何帮助或建议将不胜感激
答案 0 :(得分:1)
您的类在每次加载时都会被实例化,因此它不会有从页面视图到页面视图的全局变量。你需要以某种方式存储它。就像在查询字符串或会话中一样。您也可以使用viewstate。
例如
ViewState(“Variable”)=“你的字符串”
答案 1 :(得分:1)
据我所知,您有两种选择:
1)再次加载。
不确定你的情况是否可行。这通常在处理数据库查询时完成。
2)将它放在ViewState中,如下所示:
ViewState["check"] = check;
然后加载它:
string check = Convert.ToString(ViewState["check"]);
答案 2 :(得分:0)
Viewstate是要走的路,正如其他人已经回答的那样。无论你做什么,请不要在会议中填写。