Я разрабатываю невизуальную веб-часть SharePoint 2010, которая отображает какие-то данные в большой таблице. Строки таблицы должны быть отфильтрованы путем выбора критерия фильтрации из DropDownList, который является частью веб-части.
Событие OnSelectedIndexChanged в DropDownList запускается после CreateChildControls и перед OnPreRender. Поскольку ячейки таблицы содержат LinkButtons с присоединенным событием OnClick, они должны быть созданы в CreateChildControls, чтобы запускались события OnClick.
Я не знаю, какие строки таблицы нужно скрыть, пока не будет запущен OnSelectedIndexChanged в DropDownList, поэтому я создаю все возможные строки таблицы в CreateChldControls и пытаюсь удалить отфильтрованные позже в OnSelectedIndexChanged событии напрямую или в OnPreRender. Строки были физически удалены из коллекции элементов управления родительской таблицы, но они не отображаются.
В качестве теста я попытался удалить несколько случайных строк в конце метода CreateChildControls после их создания, это сработало, и строки не были отрисованы.
Как удалить строки:
Table mt = FindControl("matrixtable") as Table;
Helpers.Log("Controls in Table: " + mt.Controls.Count);
foreach (int kdid in kdIdsInvisible)
{
TableRow c = mt.FindControl("kdrow" + kdid) as TableRow;
Helpers.Log(c.ID);
mt.Controls.Remove(c);
}
Helpers.Log("Controls in Table: " + mt.Controls.Count);
Вывод:
Controls in Table: 88
Controls in Table: 2
Но все строки по-прежнему отображаются ...
Есть ли решение для этого? Заранее спасибо!