Я сталкиваюсь с очень распространенной проблемой, и я попробовал почти каждое решение, но ни одно из них не решило мою проблему.Я создал Grid View и хочу, чтобы он имел динамические столбцы.Четыре столбца среди них должны иметь некоторые элементы управления (текстовое поле, метка и флажок), поэтому я создал его как поля шаблона (ниже кода)
TemplateField tf4 = new TemplateField();
tf4.HeaderText = "Sr.No";
CustomerBillingGrid.Columns.Add(tf4);
TemplateField tf1 = new TemplateField();
tf1.HeaderText = "Select";
CustomerBillingGrid.Columns.Add(tf1);
TemplateField tf2 = new TemplateField();
tf2.HeaderText = "Misc";
CustomerBillingGrid.Columns.Add(tf2);
TemplateField tf3 = new TemplateField();
tf3.HeaderText = "Total";
CustomerBillingGrid.Columns.Add(tf3);
Затем я создал поля Bound, которые отображают результат запроса к базе данных (код ниже)
if (ds.Tables[0].Rows.Count > 0)
{
int num = 2;
foreach (DataColumn col in ds.Tables[0].Columns)
{
BoundField bf = new BoundField();
bf.HeaderText = col.ColumnName;
bf.DataField = col.ColumnName;
CustomerBillingGrid.Columns.Insert(num, bf);
num++;
}
CustomerBillingGrid.DataSource = ds;
CustomerBillingGrid.DataBind();
}
После этого я динамически сгенерировал элементы управления для GridView.
protected void GenrateDynamicControls()
{
Label lblSNo = new Label();
lblSNo.ID = "lblSNo";
lblSNo.Text = "1";
Page.Form.Controls.Add(lblSNo);
CheckBox chkSelect = new CheckBox();
chkSelect.ID = "chkSelect";
chkSelect.AutoPostBack = true;
Page.Form.Controls.Add(chkSelect);
TextBox txtMisc = new TextBox();
txtMisc.ID = "txtMisc";
Page.Form.Controls.Add(txtMisc);
TextBox txtTotal = new TextBox();
txtTotal.ID = "txtTotal";
Page.Form.Controls.Add(txtTotal);
}
Я вызывал этот метод на каждой обратной передаче
if (!IsPostBack)
{
if (!Convert.ToBoolean(ViewState["DynamicControlsGenrated"]))
{
GenrateDynamicControls();
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что все эти динамические элементы управления теряются при каждой обратной передаче, а вторая проблема заключается в том, как добавить эти динамически сгенерированные элементы управления в GridView и сохранить их постоянство.
Спасибо,