我有一个带有嵌套文本框的网格视图。我想关闭视图状态,但事实是当数据发布时,gridview内的文本框不可用(回发时gridview中没有行)。
我正在使用ASP.NET 2.0,所以它会进入控制状态,而不是视图状态吗?
gridview的ASPX代码示例:
<asp:GridView runat="server" ID="myGridView">
<Columns>
<asp:TemplateField ItemStyle-Wrap="false" HeaderText="Name">
<ItemTemplate>
<asp:TextBox runat="server" ID="myTextBox" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
编辑
控件的信息不存储在视图状态中(对于选定值和.text等内容):
ASP.NET 2.0版中引入的控件状态类似于视图状态,但在功能上与视图状态无关。页面开发人员可以禁用页面的视图状态或单个控件的性能。但是,无法禁用控制状态。控制状态用于存储控件的基本数据(例如寻呼机控件的页码),这些数据必须在回发时可用,以使控件即使在禁用视图状态时也能正常工作。
答案 0 :(得分:1)
这article explains how to use ControlState。也许您需要覆盖SaveControlState
方法以在TemplateField
中保存ControlState
数据。
在this article中搜索“使用控件状态的缺点:”:
“需要一些编程。虽然ASP.NET页面框架为控件状态提供了基础,但控件状态是一种自定义状态持久性机制。要充分利用控件状态,必须编写代码来保存和加载控件状态。 “
也许有帮助:
答案 1 :(得分:1)
控件不管理从PostBack到PostBack的状态。这就是ViewState的用途。 Gridview中的控件与存储在viewstate中的数据绑定,除非您在每个PostBack上绑定控件(不可取)。