У меня есть GridView. В начале у него есть флажок, а остальные столбцы создаются автоматически:
<asp:GridView ID="DailyData"
EmptyDataText="No data."
CssClass="data-grid"
HeaderStyle-CssClass="HeaderText"
Width="100%"
Visible="true"
runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server" />
</ItemTemplate>
<HeaderStyle Font-Bold="True" />
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnEdit" OnClick="btnEdit_Click" Text="Editar" runat="server" />
<asp:Button ID="btnSave" OnClick="btnSave_Click" Text="Guardar" runat="server" />
DailyData.AutoGenerateColumns = true;
DailyData.DataSource = dataTable;
DailyData.DataBind();
Когда я нажимаю кнопку «Изменить», он добавляет элементы управления текстовым полем в требуемые ячейки и помещает ячейку .text в текстовом поле .text:
protected void btnEdit_Click(object sender, EventArgs e)
{
if (DailyData.Rows.Count > 0)
{
int checks = 0;
foreach (GridViewRow gvr in DailyData.Rows)
{
CheckBox check = gvr.Cells[0].Controls[1] as CheckBox;
if (check.Checked == true)
{
foreach (DataControlFieldCell cell in gvr.Cells)
{
if (!cell.ContainingField.HeaderText.Contains("DATE") &&
!cell.ContainingField.HeaderText.Contains("ID") &&
!cell.ContainingField.HeaderText.Contains("CP") &&
!cell.ContainingField.HeaderText.Equals(""))
{
string texto = cell.Text;
if (texto == " ")
texto = "";
cell.Text = "";
TextBox txt = new TextBox();
txt.Text = texto;
cell.Controls.Add(txt);
}
}
checks++;
}
}
if (checks == 0)
{
Page.ClientScript.RegisterClientScriptBlock(GetType(), "popup", "alert('There isn't any row checked')", true);
}
}
}
Проблема возникает, когда я пытаюсь сохранить информацию об этих текстовых полях (которые пользователь редактировал). Когда я нажимаю кнопку «Сохранить», в ячейках GridView нет элементов управления текстовым полем.
Я пытался сохранить GridView в переменной сеанса сразу после создания текстовых полей. И это работает, но проблема остается той же ... пользовательский ввод этих текстовых полей не сохраняется в этой переменной сеанса, поэтому при нажатии кнопки Сохранить на них не существует текстового поля. Текст.
Есть предложения, как это сделать?
Код кнопки «Сохранить» почти такой же, как код кнопки «Изменить», только вместо добавления текстового поля он получит textbox.text и отправит его в базу данных.