具有ObjectDataSource的动态列的Gridview不会在回发时保持viewstate

时间:2011-09-19 07:51:54

标签: asp.net

Gridview具有带ObjectDataSource的动态列,不会在回发时保持viewstate。

以下是我遵循的步骤: -

1)在aspx上,我将GridView DataSourceID设置为ObjectDataSource(ObjectContainerDataSource是特定的)

2)在页面加载时,我添加了一个动态列,其中包含GridView的复选框以及其他集合数据。 (不在里面!回发条件)。

3)添加Gridview Columns后,我使用上面的Collection初始化ObjectDataSource的DataSource属性。

现在,GridView第一次显示数据以及动态复选框列。

但是当我尝试在按钮点击事件中找到所选复选框时,它会显示所有复选框都为false。 (不保留复选框状态)。

注意: - 上面的代码在没有ObjectDataSource的情况下工作正常。 (我刚刚更换了数据源,所有代码都完好无损)。我猜,它引起了GridView.DataBind()。

代码段: -

protected void Page_Load(object sender, EventArgs e)
{
    CreateDynamicGridColumns(ref GridView gridView, ref ObjectContainerDataSource dataObjectSource, List<DataField> DataFields);

    this.dataObjectSource.DataSource = dataSource;
}


public static void CreateDynamicGridColumns(ref GridView gridView, ref ObjectContainerDataSource dataObjectSource, List<DataField> DataFields)
{
            foreach (DataField oField in DataFields)
            {
                TemplateField tf = new TemplateField();
                // create the data rows
                tf.ItemTemplate =
                    new GridViewTemplate(DataControlRowType.DataRow, resources, oField, HostPage);

                // create the header
                tf.HeaderTemplate =
                    new GridViewTemplate(DataControlRowType.Header, resources, oField, HostPage);
                // add to the GridView
                tf.EditItemTemplate =
                    new GridViewEditTemplate(DataControlRowType.DataRow, resources, oField, HostPage);

                gridView.Columns.Add(tf);
            }

            dataObjectSource.DataSource = datasource;
}

请提供一些帮助。提前谢谢......

0 个答案:

没有答案