在自定义GridView中动态添加子标题的问题

本文关键字:标题 问题 添加 动态 自定义 GridView | 更新日期: 2023-09-27 18:03:45

我想获得一个网格,能够根据某些列的值添加子标题(一行或几行)(数据源按此列分组排序)。在我继承的GridView中,我重写了OnRowDataBind方法:如果当前调用OnRowDataBind时考虑列的值不等于以前的值,那么在当前行之前插入特殊的头行。

Table tbl = this.Controls[0] as Table; //this - pointer to CustomGridView tbl.Controls.AddAt(rowIndex + add_counter + 1, NewSubHeaderRow); /*rowIndex - RowIndex of current row, add_counter - amount of already added SubHrader rows */

一切正常。但问题发生在回发时,GridView恢复状态时。每个组中的第一行及其所有控件(换句话说,每个动态添加的子标题行之后的第一行)没有任何属性。但是组中的第二行同时保留了自己的属性和第一行的属性。

一些帮助将是非常有用的。也许有另一种(和正确的)方式来添加行到GridView。那么,请给我提供教程或文章的链接。

在自定义GridView中动态添加子标题的问题

动态控件在回发时消失,因为回发框架没有关于这些控件的信息。跟踪这些动态控件并在回发后重新创建它们是程序员的责任。

请参考以下文章重新创建动态回发控件:常见问题:为什么动态控件在回发时消失

感谢Waqas。这是我的决定。我重写CreateChild(数据源,isBinding)并创建列表,其中放置行索引,在此之前您应该添加子标题行。在SaveViewState中,我将这个列表添加到密封对象中。在Load ViewState上,我加载这个列表,如果它不是空的,创建子标题行保存索引。也许有一种更简单、更自然的方法。但它对我来说是安全的)))