2010-11-09 120 views
0

我在页面上有两个感兴趣的控件:一个DropDownList和一个Button。如果用户按下按钮,他会得到一个弹出窗体,当完成时,会导致基本页面完全重新加载,从而丢失DropDownList中的值。澄清,这是一个刷新,而不是回发。我无法改变它使其成为回传。通过此页面刷新在DropDownList中保持所选值最直接的方式是什么?我无法避免页面刷新,因为在弹出窗口中输入的数据反映在基本页面的其他位置。如何在页面刷新之间保留控件的值/文本属性?

更新

我拼凑起来的,我不是跟非常开心出不确定性的解决方案:当用户点击该按钮时,我使用JavaScript来获取下拉的电流值,并通过与查询字符串到被加载的弹出窗口。当用户点击弹出窗口中的“保存”时,导致数据被保存,然后重新加载基本页面,我首先将querystring值存储到Session变量中。加载时的基本页面查看所述Session变量。如果存在值,则会相应地设置下拉列表的值并删除Session变量。

虽然有点奇怪,但它是我能想到的最好的。我知道我的Gracious Benefactors不喜欢使用Session变量,但考虑到页面重新加载,我无法想出一个替代方案。另外,由于Session变量是短暂的,在页面关闭前不久创建,然后在打开后续页面后立即删除,我希望这是可以接受的。

对比意见,驳斥我的解决方案或推理,热烈欢迎。

结论

最终,在我所描述的解决方案,我仁慈的恩人,我们商定了一个替代做法:如果选择在DropDownList提出,它必须被打开弹出之前保存。这完全避免了整个ViewState问题。

+0

所有这些都应该自动在[ViewState](http://msdn.microsoft.com/en-us/library/ms972976.aspx) – 2010-11-09 20:43:24

+0

或者ajax post – 2010-11-09 21:04:48

+0

中看到页面可能会帮帮我。所以我们可以看到你是如何做你的弹出窗体和回发。 – David 2010-11-09 22:49:33

回答

1

对于更新的问题:

的解决方法正试图听起来像它应该工作。这不是你想使用SessionState的事情,但是这里有需求使得情况变得不寻常。

根据你如何获得基本页面来重新加载,你可能会添加一个查询字符串到那个可以节省你的Hte值在SessionState中。但我想你可能已经考虑过了。

但基本上,因为Postback值和viewstate是不可能的,所以SessionState和查询字符串是唯一的选择。噢,除非你被允许使用HTML5本地存储? (可能不是)


从问题更新之前:

如果aspnetForm被调回的价值应该被自动回传值的方式依然存在。因此,首先要了解的是,您的表单是通过回传还是以其他方式刷新页面。

如果你不能回发主表单,那么rockinthesixstring表示一个Ajax文章可能是你需要的。另外,如果您想将数据源绑定到DropDownList或尝试自己保留selectedValue,然后检查并重新考虑这一点,那么可以使用任何其他方法。

+0

这是一个重新加载而不是回传,我也不能改变页面来实现它。我正在更新这个问题来澄清这一点。 – 2010-11-09 23:22:54

相关问题