0

我有一个 GridView 控件的自定义模板列 (ITemplate)。此列在 GridView 的 OnInit 方法中插入/添加到 GridView 列中。这似乎工作正常,如果我尝试访问 PreRender 中的网格行,我可以看到每一行都有一个单元格,其中模板字段是我的模板列类型。

((cell as DataControlFieldCell).ContainingField as TemplateField).ItemTemplate; // the type of this is my template column

但是,如果我随后在此页面上回发(请求新数据,或者在网格中填充相同的数据),所有事件都会被触发,并且我的列会添加到 OnInit 中,但是当我到达 PreRender 时,单元格的 ItemTemplate ItemTemplate 属性为 null(即使 OnInit 确实添加了此列,并且它确实显示为一个空单元格,并且在 OnInit 中未添加任何控件)。就好像某些事件没有触发,它将在回发时将 TemplateField 设置为我的模板。

我试过强制 DataBind 但这不起作用。我也尝试过使用 InstantiateIn 来填充/修改列,但这甚至不会在回发时触发,即使我可以看到添加了列模板(为模板调用了构造函数)。

真的很困惑这应该如何工作......

更新 1

澄清一下:在首页加载时调用 InstantiateIn,但在任何回发时都不会调用。但!添加了该列。例如,如果我有 5 个列,然后在 OnInit 的 GV 中添加我的模板。它每次都在那里,它是创建的,但不是我第一次加载后的模板字段类型。

4

0 回答 0