Inquiridor
Obter valor de TextBox no Footer do Gridview

Discussão Geral
-
Olá pessoal!
Estou tentando criar no footer do meu gridview uma opção para inserção de dados.
Então fiz desta forma:
protected void gvSolucProp_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer)
{
TextBox txtNewDescSol = new TextBox();
txtNewDescSol.ID = "txtNewDescSol";
e.Row.Cells[3].Controls.Add(txtNewDescSol);
TextBox txtNewData = new TextBox();
txtNewData.ID = "txtNewData";
e.Row.Cells[4].Controls.Add(txtNewData);
CalendarExtender ceData = new CalendarExtender();
ceData.TargetControlID = txtNewData.ID;
ceData.OnClientDateSelectionChanged = "verificaData";
ceData.Animated = true;
ceData.Format = "d";
e.Row.Cells[4].Controls.Add(ceData);
DropDownList ddlNewStatus = new DropDownList();
ddlNewStatus.ID = "ddlNewStatus";
ddlNewStatus.Items.Add("Não concluído");
ddlNewStatus.Items[0].Value = "0";
ddlNewStatus.Items.Add("Concluído");
ddlNewStatus.Items[0].Value = "1";
e.Row.Cells[5].Controls.Add(ddlNewStatus);
}
}Também coloquei um TemplateField e inseri em seu FooterTemplate dois botões (Salvar e Cancelar) com commandname Salvar e Cancelar .
O layout do grid aparece perfeitamente, porém ao clicar no botão salvar não consigo obter os valores do textbox no footer.
Estou tentando obter os valores do text box no evento rowcommand:
GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
TextBox txt = row.FindControl("txtNewData") as TextBox;quando faço isso o textbox fica nulo.
Tentei também este trecho e não deu certo:
TextBox txt = gvSolucProp.FooterRow.FindControl("txtNewData") as TextBox;
string teste = txt.Text;Desde já agradeço a ajuda.
- Tipo Alterado Giovani Cr segunda-feira, 23 de dezembro de 2013 13:52
Todas as Respostas
-
-
Olá Júnior
Aparentemente o meu evento RowDataBound está correto, ele gera os campos no footer do grid do jeito que preciso:
O que não está funcionando é que ao clicar em salvar não consigo pegar o valor digitado no text box para salvar no banco de dados.
Estou tentando obter estes dados no evento rowcommand.
Atenciosamente.
-
-
Não, os itens do footer eu crio no rowdatabound desta forma:
protected void gvSolucProp_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer)
{
TextBox txtNewDescSol = new TextBox();
txtNewDescSol.ID = "txtNewDescSol";
e.Row.Cells[3].Controls.Add(txtNewDescSol);
TextBox txtNewData = new TextBox();
txtNewData.ID = "txtNewData";
e.Row.Cells[4].Controls.Add(txtNewData);
CalendarExtender ceData = new CalendarExtender();
ceData.TargetControlID = txtNewData.ID;
ceData.OnClientDateSelectionChanged = "verificaData";
ceData.Animated = true;
ceData.Format = "d";
e.Row.Cells[4].Controls.Add(ceData);
DropDownList ddlNewStatus = new DropDownList();
ddlNewStatus.ID = "ddlNewStatus";
ddlNewStatus.Items.Add("Não concluído");
ddlNewStatus.Items[0].Value = "0";
ddlNewStatus.Items.Add("Concluído");
ddlNewStatus.Items[0].Value = "1";
e.Row.Cells[5].Controls.Add(ddlNewStatus);
} -
vc olhou o link que te mandei ? lá tem como pegar os textbox do footer
Junior
-
-