2016-05-09 47 views
0

我有一个asp.net网站,并在主页面我有一些下拉控件,用户选择产品的标准。 在选定的最后一个下拉框之后,我将选定的值发送到另一个页面,该页面是childpage到masterpage,然后对数据库进行查询并将结果呈现在gridview中。关于如何搜索标准产品的建议

我的问题是,主页面被刷新,所有选定的值被清除。 如何将值保存到masterpage下拉框或者是否有更好的解决方案?

回答

0

我在主页中添加了一个隐形面板并隐藏了里面的所有控件。而不是张贴到另一个页面,我用数据填充控件并显示面板。 我发现这样更快更简单。 感谢您的帮助

1

如果您重定向到另一个页面,主页面将不会保留数据,您唯一可以做的就是使用会话变量。你可以在“面具”的会话值使用静态变量:

public static string MyValue 
    { 
     get { return (string)HttpContext.Current.Session["MyValue"];} 
     set { HttpContext.Current.Session["MyValue"] = value; } 
    } 

做重定向之前将值赋给你的“静态”变量,在母版页的Page_Load中可以读取这些值,并指定每个人各自的控制。例如:

在Page1.aspx.cs:

public void DoRedirect() 
{ 
    SiteMaster.MyValue = txtControlPage1.Text; 
    Response.Redirect("~/Page2.aspx", true); 
} 

当Page2.aspx加载,母版页在Page_Load将被调用,你可以这样做:

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Page_Load of Site.Master.cs 
    if (!IsPostBack) 
    { 
     txtSomeControl.Text = SiteMaster.MyValue; 
     MyUpdatePanel.Update(); 
    } 
} 

无论您要重定向多少页,主页总会读取静态变量中的值,并且您只需在重定向之前分配值。

+0

当我在同一页面,我不丢失数据,显示结果的网格是在另一个页面。当我执行response.redirect转到其他页面时,我正在丢失数据。 如果一切都在同一页面上不是问题,但下拉列表位于MasterPage上,网格位于另一页面上。 –

+0

检查我的更新,并让我知道它是否对你有帮助 – Crabax