是否可以显式强制asp.NET重新加载任何数据控件的ViewState数据?

是否可以显式强制asp.NET重新加载任何数据控件的ViewState数据?,asp.net,gridview,viewstate,page-lifecycle,loadviewstate,Asp.net,Gridview,Viewstate,Page Lifecycle,Loadviewstate,关于asp.net生命周期层次结构,我有一个问题 基本上,我有一个用户控件,其中有一个GridView。这个GridView是基于控件上的公共属性(下面简化代码中的命名参数)动态生成的 在aspx页面中插入此控件,设置其Parameter属性并对其调用DataBind(Parameter)时,一切正常。GridView在UI上生成和填充 当我发回页面时出现问题。我必须重新生成GridView结构,以便控件的ViewState中的数据可以用于填充GridView。这样我才能实现它的内容。但只要Gr

关于asp.net生命周期层次结构,我有一个问题

基本上,我有一个用户控件,其中有一个GridView。这个GridView是基于控件上的公共属性(下面简化代码中的命名参数)动态生成的

在aspx页面中插入此控件,设置其Parameter属性并对其调用DataBind(Parameter)时,一切正常。GridView在UI上生成和填充

当我发回页面时出现问题。我必须重新生成GridView结构,以便控件的ViewState中的数据可以用于填充GridView。这样我才能实现它的内容。但只要GridView结构是动态生成的,并且基于其上设置的参数属性,这是不可能的。因为用户控件的OnInit是在页面的OnInit之前调用的,这就是为什么在生成GridView结构之后设置Parameter属性的原因。结果,我最终得到了一个空的Gridview

下面是简化的代码

你能给我一些建议如何克服这个问题吗

是否可以显式强制asp.NET重新加载gridview的ViewState

PageHomePage.aspx有一个OnInit事件处理程序,以这种方式设置用户控件ctlMyUSerControl的属性

ctlMyUserControl

    protected override void OnInit(EventArgs e)
{
        if (Page.IsPostBack && Parameter !=null && SomeGridViewRowsExistOnUI)
        {
                        // Generate dynamic columns based on Parameter property
                        // So that gridview can be populated 
                       // with the post-backed data which 
                        // should contain the ViewState of the gridview 
                       GenerateGridViewColumns(Parameter);
        }

    base.OnInit(e);
}
我把它卖给了伙计们

我所做的是在用户控件的容器页面上重新生成GridView列

因此,在页面的OnInit上,我重新生成了我的列,它仍然在调用LoadViewState()方法之前

我把它卖给了伙计们

我所做的是在用户控件的容器页面上重新生成GridView列

因此,在页面的OnInit上,我重新生成了我的列,它仍然在调用LoadViewState()方法之前

    protected override void OnInit(EventArgs e)
{
        if (Page.IsPostBack && Parameter !=null && SomeGridViewRowsExistOnUI)
        {
                        // Generate dynamic columns based on Parameter property
                        // So that gridview can be populated 
                       // with the post-backed data which 
                        // should contain the ViewState of the gridview 
                       GenerateGridViewColumns(Parameter);
        }

    base.OnInit(e);
}
protected override void OnInit(EventArgs e)
    {

              Parameter parameter = new Parameter()
                       name="Orhan",
                       surname= "Pamuk"};

               ctlMyUserControl.GenerateGridViewColumns(parameter);


        }