У меня проблема, я не могу получить контроль, который я добавил в DataGrid.Я добавляю его в событие OnRowDataBound, например:
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit))
{
//int cindex = 0;
//for (cindex = 0; cindex < e.Row.Controls.Count; cindex++)
foreach (Control ctl in e.Row.Controls)
{
DataControlFieldCell dcctl = (DataControlFieldCell)ctl;
TableCell tcell = (TableCell)dcctl;
Label lblComment = new Label();
TextBox txtComment = new TextBox();
lblComment.Text = "<br>Comment: ";
dcctl.Controls.Add(lblComment);
dcctl.Controls.Add(txtComment);
//tcell.Controls.Add(lblComment);
//tcell.Controls.Add(txtComment);
//e.Row.Cells[cindex].Controls.Add(lblComment);
//e.Row.Cells[cindex].Controls.Add(txtComment);
Что здесь происходит: по умолчанию в TableCell уже существует один TextBox, и я хочу добавить еще один TextBox и Label.После ограничения я вижу 2 текстовых поля, я могу ввести данные в оба, но когда я нажимаю кнопку Обновить, возникает событие OnRowUpdating
, где я не могу получить свой TextBox!
protected void RowUpdating(object sender, GridViewUpdateEventArgs e)
{
grdView.EditIndex = -1;
int counter = 0;
for (counter = 0; counter < grdView.Rows[e.RowIndex].Cells.Count; counter++)
{
foreach (Control ctl in grdView.Rows[e.RowIndex].Cells[counter].Controls)
{
И здесьЯ буду получать по умолчанию только один TextBox (с его значением).Но мой TextBox исчез!: (
Что вы могли бы предложить мне здесь сделать?
PS Я не могу использовать предопределенные столбцы, такие как asp:TemplateField
в файле aspx, потому что моя таблица каждый раз имеет разное количество строкЭто динамично