Молчун
Зарегистрирован: 29 April 2008
Сообщения: 36
Примеры кода: 0
|
Динамически создаваемые GridView - их надо отрисовывать каждый раз при перезагрузке страницы? |
29 July 2008 09:25 |
|
|
|
|
Доброго времени суток!
Возникла следующая проблема: созданные динамически в PageLoad внутри условия
!Page.IsPostBack несколько элементов GridView (заранее количество не известно, обуславливается входными данными), само сабой, успешно исчезают после выполнения любого действия, вызывающего перезагрузку страницы (нажатие кнопки, смена значения в DropDownList).
Получается, надо кажый раз перерисовывать элементы заново. А таблиц может быть немало. Хотелось бы нарисовать их при первой загрузке, а дальше лишь делать DataBind, ведь количество таблиц и столбцы в них не изменятся в процессе работы со страницей, могут измениться только данные. Возможно ли каким-то образом этого достичь?
Сейчас таблицы создаются так:
for (int i = 0; i < ds.Tables["service"].Rows.Count; i++)
{
System.Web.UI.WebControls.Label LabelB = new System.Web.UI.WebControls.Label();
LabelB.Text = ds.Tables["service"].Rows[i][0].ToString();
Panel2.Controls.Add(LabelB);
GridView gv = new GridView();
gv.ID = "GridView" + (i + 3).ToString();
gv.AutoGenerateColumns = false;
gv.AllowSorting = true;
gv.CellPadding = 4;
BoundField bf1 = new BoundField();
bf1.DataField = "server";
bf1.HeaderText = "Источник данных";
bf1.ShowHeader = false;
bf1.HeaderStyle.CssClass = "tableinput";
BoundField bf2 = new BoundField();
bf2.DataField = "base";
bf2.HeaderText = "База";
bf2.ShowHeader = false;
bf2.HeaderStyle.CssClass = "tableinput";
CommandField cf = new CommandField();
if (ds.Tables["service"].Rows[i][2].ToString() == "1") cf.ShowDeleteButton = true;
else cf.ShowEditButton = true;
gv.Columns.Add(bf1);
gv.Columns.Add(bf2);
gv.DataSource = ds.Tables["AddConnection" + i];
gv.Columns.Add(cf);
Panel2.Controls.Add(gv);
gv.DataBind();
}
|
|