我刚刚开发了一个新的GridView MultiFilter控件(CompositeControl),其工作方式如下图所示:
我使用ViewState作为控件的属性,因此它会在回发后保留所有值。我想在重定向之前将控件属性保存到会话中,这样当我的页面再次加载时,我可以将属性加载回我的控件。
有没有人对如何实现这一点有任何建议?
答案 0 :(得分:2)
您必须在此列表页面中执行以下两项操作:
还有一件事(重定向)页面:
(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)搜索点击商店搜索数据到会话
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");
我希望这对你有所帮助。我建议用一个文本框和&网格,然后尝试你现在的情况。
如果这可以解决您的问题,请将此答案标记为有用。
答案 1 :(得分:0)
您可以将数据分配给Session,其方式与分配给ViewState的方式非常相似。
这是一个像ViewState一样的键值字典。
例如:
Session["someKey"] = "An arbitrary value";
答案 2 :(得分:0)
如果您可以使用表单提交重定向到其他页面,则可以使用页面的操作属性将表单发布到所需页面。这样,所有控件的值都将在Request [“KEY NAME HERE”]
中提供<form action="anotherpage.aspx" id="frmData">
<!-- YOUR CONTROLS HERE -->
<input type="submit" value="Submit" />
</fomr>
您也可以使用JS提交表单
$("#frmData").submit();