Asp.net 如何在启用控件以备将来回发时转储控件的viewstate?
我们有一个Telerik网格(即ASP.Net香草网格的增强版)。在一些回发中,我们对网格进行了重大更改,我们不希望为该页面加载的网格控件加载viewstate,但我们希望将viewstate加载到将来的加载中。在所有情况下,我们都希望保存viewstate,以防用户每次使用相同的数据源 基本上是这样的:Asp.net 如何在启用控件以备将来回发时转储控件的viewstate?,asp.net,Asp.net,我们有一个Telerik网格(即ASP.Net香草网格的增强版)。在一些回发中,我们对网格进行了重大更改,我们不希望为该页面加载的网格控件加载viewstate,但我们希望将viewstate加载到将来的加载中。在所有情况下,我们都希望保存viewstate,以防用户每次使用相同的数据源 基本上是这样的: 页面最初加载 视图状态已保存 用户在页面上操纵的控件不是change datasource控件 页面发回 创建的控件 视图状态已加载 已处理的事件 视图状态已保存 用户返回页面 用户操纵的数
- 页面最初加载
- 视图状态已保存
- 用户在页面上操纵的控件不是change datasource控件
- 页面发回
- 创建的控件
- 视图状态已加载
- 已处理的事件
- 视图状态已保存
- 用户返回页面
- 用户操纵的数据源更改控件
- 页面发回
- 创建的控件
- Viewstate已加载(我们不希望加载网格的Viewstate,但无论如何都是如此)
- 已处理的事件
- Viewstate已保存(我们希望保存所有Viewstate,包括新网格的Viewstate)
- 用户返回页面
您可以从相关的网格控件派生,然后在不想加载viewstate时重写LoadViewState方法以不加载viewstate
public class MyGrid : BaseGrid
{
public bool IsNew { get; set; }
public override void LoadViewState(object viewState)
{
if (!this.IsNew)
{
base.LoadViewState(viewState);
}
}
}
您能解释一下“我们不希望应用viewstate”吗?viewstate是在处理上一个请求时保存的,但由于按下按钮,用户希望执行一个操作,将网格源更改为另一个源(因此它将具有不同的列等)我们不希望前一个网格的viewstate应用于新网格,因为它是新的数据源。并不是我不想保存它。如果网格内容保持不变,我希望加载viewstate,但是如果网格内容由于用户加载不同的数据源而发生根本性变化,那么我希望不加载viewstate。但无论哪种情况,我都希望保存viewstate。