我刚刚开发了一个新的 GridView MultiFilter 控件 ( CompositeControl ),其工作原理如下图所示:
我将 ViewState 用于控件的属性,因此它在回发后保留所有值。我想在重定向之前将我的控件属性保存到 Session 中,这样当我的页面再次加载时,我可以将属性加载回我的控件。
有人对如何实现这一点有任何建议吗?
您必须在此列表页面中做 2 件事:
还有 1 件事的详细信息(重定向)页面:
(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");
我希望这可以帮助你。我建议使用一个文本框和网格来实现这一点,然后尝试使用您当前的场景。
如果这解决了您的问题,请将此答案标记为有用。
如果您可以使用表单提交重定向到另一个页面,那么您可以使用页面的操作属性将表单发布到所需的页面。这样,所有控件的值都将在 Request["KEY NAME HERE"] 中可用
<form action="anotherpage.aspx" id="frmData">
<!-- YOUR CONTROLS HERE -->
<input type="submit" value="Submit" />
</fomr>
您也可以使用 JS 提交表单
$("#frmData").submit();
您可以将数据分配给 Session 几乎与分配给 ViewState 的方式相同。
它是一个键值字典,就像 ViewState 一样。
前任:
Session["someKey"] = "An arbitrary value";