1

我刚刚开发了一个新的 GridView MultiFilter 控件 ( CompositeControl ),其工作原理如下图所示:

多滤镜图像

我将 ViewState 用于控件的属性,因此它在回发后保留所有值。我想在重定向之前将我的控件属性保存到 Session 中,这样当我的页面再次加载时,我可以将属性加载回我的控件。

有人对如何实现这一点有任何建议吗?

4

3 回答 3

2

您必须在此列表页面中做 2 件事:

  • (1)页面加载
  • (2)搜索点击

还有 1 件事的详细信息(重定向)页面:

  • (3)返回列表页面时传递一些查询字符串

(1)当页面加载决定加载正常或搜索(从详细页面返回)数据

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
    if (Request.QueryString["back"] != null)
        bindDataFirst();
// same data load logic as present
    else
            bindDataForBack();
// you come back from detail page hence bind search & grid data
}

private void bindDataForBack()
    {

strName = Session["SearchName"] == null ? "" : Session["SearchName"].ToString();
// check session search conditions & data and bind

//also bind grid by respective search parameters & search options (top side)

(2)search click 将搜索数据存入session

public void btnSearch_Click(object sender, System.EventArgs e)
    {

Session["SearchName"] = strName;// store search data into session variables

//bind grid by respective search parameters

(3)在重定向(详细)页面设置后退按钮,如:

public void btnBack_Click(object sender, System.EventArgs e)
    {
Response.Redirect("ListPage.aspx?back=1");

我希望这可以帮助你。我建议使用一个文本框和网格来实现这一点,然后尝试使用您当前的场景。

如果这解决了您的问题,请将此答案标记为有用。

于 2013-10-11T05:29:48.093 回答
0

如果您可以使用表单提交重定向到另一个页面,那么您可以使用页面的操作属性将表单发布到所需的页面。这样,所有控件的值都将在 Request["KEY NAME HERE"] 中可用

<form action="anotherpage.aspx" id="frmData">
<!-- YOUR CONTROLS HERE -->
<input type="submit" value="Submit" />
</fomr>

您也可以使用 JS 提交表单

$("#frmData").submit();
于 2013-10-11T05:29:20.550 回答
0

您可以将数据分配给 Session 几乎与分配给 ViewState 的方式相同。

它是一个键值字典,就像 ViewState 一样。

前任:

Session["someKey"] = "An arbitrary value";
于 2013-10-11T04:37:40.787 回答