我有一组GridViews和DataSources共享几个列和设置,所以我将它们合并为一个UserControl
,我给了DataControlFieldCollection
以使我能够将列添加到aspx文件。因此,我可以这样做:在运行时将TemplateField添加到GridView
<mine:PreGeneratedGridView runat="server">
<Columns>
<asp:BoundField DataField="mycolumn"
HeaderText="My Header" SortExpression="mycolumn" />
</Columns>
</mine:PreGeneratedGridView>
我使用这个代码移动其他列到GridView
包含在我的PreGeneratedGridView
UserControl
:
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < Columns.Count; ++i)
{
if (IsPostBack) myGridView.Columns.RemoveAt(i);
myGridView.Columns.Insert(i, Columns[i]);
}
}
这令我有点难看(和可能会出错,虽然看起来工作正常),但是在每次加载页面时将列添加到GridView
,但是当我尝试将此列加载代码放入Page_Init
时,它阻止了类型为TemplateField
的列运行(即列为空白,尽管标题不是) PostBack
。
有没有一种方法来加载我的列而不使用Page_Load
/IsPostBack
这种方式?
我不明白你为什么要删除并重新插入它们回发。如果在回发中,您只是对表格列做任何事情,会发生什么? – 2012-01-09 01:34:25
@Andrew:'TemplateField'列最终为空白,不包括头部。 – Brian 2012-01-09 03:58:14