如何在asp.net页面加载后仍保留全局字符串变量的值
我在保留我在独家新闻顶部定义的字符串变量时遇到问题,每次页面加载时,字符串值都变为null。下面是代码片段:如何在asp.net页面加载后仍保留全局字符串变量的值,asp.net,global-variables,datalist,Asp.net,Global Variables,Datalist,我在保留我在独家新闻顶部定义的字符串变量时遇到问题,每次页面加载时,字符串值都变为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 (!I
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();
}
}
public partial class房车待售:System.Web.UI.Page
{
字符串检查;
PagedDataSource pds=新建PagedDataSource();//分页
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
BindGrid();
}
}
私有void BindGrid()
{
数据表dt=null;
开关(检查)
{
案例“0-1500”:
打破
案例“1500-2000”:
dt=caravans.GetFilterbyPrice1();
打破
案例“2000+”:
打破
违约:
dt=caravans.GetAllCaravans();
打破
}
//DataTable dt=caravans.GetAllCaravans();
pds.DataSource=dt.DefaultView;
pds.allowpage=true;
pds.PageSize=3;//当项目超过12时添加页面索引//转换.ToInt16(ddlPageSize.SelectedValue);
pds.CurrentPageIndex=CurrentPage;
DataList1.RepeatColumns=3;//每行4项
DataList1.RepeatDirection=RepeatDirection.Horizontal;
DataList1.DataSource=pds;
DataList1.DataBind();
lnkbtnNext.Enabled=!pds.IsLastPage;
lnkbtnPrevious.Enabled=!pds.IsFirstPage;
掺杂();
}
受保护的无效lnkPrice2\u单击(对象发送方,事件参数e)
{
LinkButton _sender=(LinkButton)sender;
check=\u sender.CommandArgument;
//项目[“试验”]=试验;
DataTable dt=caravans.GetFilterbyPrice2();
如果(dt.Rows.Count<3)
{
lnkbtnNext.Enabled=false;
lnkbtnPrevious.Enabled=false;
}
CurrentPage=0;
BindGrid();
}
受保护的无效DLU项命令(对象源,DataListCommandEventArgs e)
{
if(e.CommandName.Equals(“lnkbtnPaging”))
{
CurrentPage=Convert.ToInt16(如CommandArgument.ToString());
BindGrid();
}
}
每当DLU ItemCommand变为活动(页面加载)时,字符串检查都变为null。如果您有任何帮助或建议,我们将不胜感激。您的类在每次加载时都会实例化,因此它在不同的页面视图之间不会有全局变量。您需要以某种方式存储它。例如在查询字符串或会话中。您也可以使用viewstate 比如说
ViewState(“变量”)=“您的字符串”据我所知,您有两个选项: 1) 重新加载它。
不确定在您的情况下是否可能。这通常是在处理数据库查询时完成的 2) 将其置于ViewState,如下所示:
ViewState["check"] = check;
并在之后加载以下内容:
string check = Convert.ToString(ViewState["check"]);
正如其他人所回答的那样,Viewstate是一种方式。无论你做什么,请不要在会议中塞满它。干杯,伙计……我正要尝试使用Viewstate,但刚刚想到向d experience的家伙提出一个问题,可能会有任何odar方式。或者可能是我让事情变得复杂,这是可以实现的简单地说,在web场场景中处理会话是一场噩梦。它会使动态网站变得复杂,但就静态网站而言,会话变量不会带来任何麻烦。。