列表框值在回发中保持不变

时间:2008-10-15 12:34:51

标签: asp.net

我在ASP.net中有一个列表框。我正在动态地填充页面中另一个列表框中的列表框值。在回发期间,输出列表框的值不会保留。 (在访问另一页并返回此页面时)。

请提出一些好的答案。 EnableViewstate =“true”无效。

5 个答案:

答案 0 :(得分:3)

你在Page_Load中做了什么,应该在

if(!IsPostBack) {}

加载中的初始化代码只需在首次加载页面时调用,而不是在回发时调用。

如果您要访问其他页面然后返回此页面,我认为您需要在会话中自行保留信息,然后在返回页面时将其恢复。

答案 1 :(得分:1)

只有您在同一页面上进行回发时,才会保留视图状态。 正如Lou Franco所写的

if(!IsPostBack) {}

您在初始页面请求中使用此选项来填写数据。如果您希望使用会话保存跨页面的数据来存储值是最好的选择。

最好在我记得的PreInit中的SaveViewState事件之前填写列表框中的数据。

答案 2 :(得分:0)

在Page的Init事件(Page_Init)中初始化控件的内容。这样,用户提供的任何值都不会被默认值覆盖。

答案 3 :(得分:0)

EnableViewState将使用首次呈现页面时的值重新填充输出列表框,因为它们仍然是存储在viewstate中的值。浏览器仅在回发中发送选定的值,因此服务器无法知道您在客户端上添加了哪些其他值。

您可以通过向页面添加隐藏输入并在更新列表框时使用动态值填充它来解决此问题。然后,您的页面可以在回发期间检查该值并正确地重新填充列表。

答案 4 :(得分:0)

在回发期间,客户端上对列表框所做的更改不会保留,您需要在隐藏字段中记录该信息,然后在page_load事件期间配置控件,以便在回发的其余部分中保持更改。 / p>