我有一組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