如何在asp.net页面加载后仍保留全局字符串变量的值

如何在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

我在保留我在独家新闻顶部定义的字符串变量时遇到问题,每次页面加载时,字符串值都变为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();
    }
}
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场场景中处理会话是一场噩梦。它会使动态网站变得复杂,但就静态网站而言,会话变量不会带来任何麻烦。。