【问题标题】:What properties ( if any ) do controls like GridView and TextBox save in their control state?GridView 和 TextBox 等控件在其控件状态下保存哪些属性(如果有)?
【发布时间】:2010-01-06 18:50:26
【问题描述】:


1) GridView 和 TextBox 等控件在控件状态下保存哪些属性(如果有)?顺便说一句 - 我假设这些控件默认启用它们的控制状态?!


2) 控件需要调用 Page.RegisterRequiresControlState(在 Init 事件期间)以表明其控件状态需要保持。

假设控件 A(A 属于 WebControl2 类型)需要保存其控件状态,并且 A 包含在控件 B 中(B 属于 WebControl1 类型)--> 我能够通过覆盖 B 的 OnInit 方法来注册 A 的控件状态:

protected override void OnInit(EventArgs e)
{
    Control control= this.FindControl("A");

    Page.RegisterRequiresControlState(control);
    base.OnInit(e);
}


这是否被认为是一种糟糕的编程习惯?


感谢

【问题讨论】:

    标签: .net asp.net user-controls webforms


    【解决方案1】:

    如果您正在寻找大量控件定义,请查看 .NET 反射器,这是一个免费工具,可让您检查这些定义。对于GridView,我知道它有editindex、pageindex、selectedindex、sortexpression、sortdirection、datakeynames、pagecount处于控制状态。我不认为 TextBox 使用控制状态。

    仅将基本属性存储在控件状态中。我不知道利用另一个控件的状态会有什么好处,因为在控件状态中加载和保存的实际值必须在受保护的 LoadControlState 和 SaveControLState 方法中完成。如果启用,值不会自动保存在控制状态。

    【讨论】:

    • "如果启用,值不会自动保存在控件状态中" 我意识到这一点,但我认为父控件能够启用嵌套控件的控件状态可能有一些好处。不管怎样,谢谢你帮助我
    • 我的意思是你必须使用加载或保存在 LoadControlState 和 SaveControlState 中的变量,这样即使你在父控件中启用它,如果控件不读/写不幸的是,从控制状态来看,它没有提供任何好处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2011-06-03
    相关资源
    最近更新 更多