У меня есть ASP.NET GridView, который использует шаблонные столбцы и пользовательские элементы управления, чтобы позволить мне динамически создавать сетку данных. Сейчас я реализую обработчик событий для вставки строки. Для этого я создаю массив значений по умолчанию и добавляю его в таблицу данных, которая выступает в качестве источника данных. Однако, когда мое событие OnLoad запускается при обратной передаче, все мои столбцы шаблона больше не имеют пользовательских элементов управления. Мое сеточное представление в итоге становится пустым, в нем ничего нет, и мой столбец кнопок также исчезает (который содержит кнопки добавления строки, удаления строки и сохранения).
Мой случай добавления строки просто делает это:
public void AddDataGridRow()
{
List<object> defRow = new List<object>();
for (int i = 0; i < fieldNames.Count; i++)
{
defRow.Add(GetDefaultValueFromDBType(types[i]));
}
dt.Rows.Add(defRow);
}
Он вызывается кнопкой в пользовательском элементе управления, который реализован следующим образом:
protected void Button1_Click(object sender, EventArgs e)
{
((Scoresheet)(this.Page)).AddDataGridRow();
}
Событие My on load выполняет кучу вещей при первом запуске, чтобы настроить GridView, но я не запускаю его снова, используя свойство IsPostBack, чтобы сообщить.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Initialize();
}
У кого-нибудь есть намеки, почему мои пользовательские элементы управления исчезают?