У меня есть набор GridViews и DataSources, которые совместно используют несколько столбцов и настроек, поэтому я объединил их все в один UserControl
, который я дал DataControlFieldCollection
, чтобы позволить мне добавлять столбцы в файл aspx.Таким образом, я могу сделать это:
<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
таким образом?