在回发后没有在行上设置ASP.Net GridView自定义模板

时间:2013-09-12 16:30:59

标签: asp.net aspxgridview

我有一个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个cols,那么在OnInit的GV中添加我的模板。它每次都在那里,它是在第一次加载后创建的,但不是我的模板字段类型。

0 个答案:

没有答案