none
Como extraer el valor de un TextBox dentro de un GridView en C# ASP.NET RRS feed

  • Pregunta

  • Como extraer el valor de un TextBox dentro de un GridView en C# ASP.NET, necesito algún evento dentro del gridView? lo que pasa es que se ejecuta al hacer clic en un botón. He intentado esto:

    foreach (GridViewRow item in GridView1.Rows)
    {
        TextBox txt2 = item.FindControl("TextBox2") as TextBox;
    	TextBox txt3 = item.FindControl("TextBox3") as TextBox;
    	TextBox txt4 = item.FindControl("TextBox4") as TextBox;
    	
    	int result = Convert.ToInt32(txt2.Text) * Convert.ToInt32(txt3.Text);
    	
    	txt4.Text = result.ToString();
    }

    pero me resulta el texto en blanco es decir "" o lo paso una variable string y su valor es "". Necesito su ayuda. Gracias por sus respuestas.

    jueves, 8 de agosto de 2013 16:06

Respuestas

  • ese TextBox txt es el textbox que esta en tu gridview??? ... cuantos textbox tienes en tu Gview??? si tienes ese solo entonces cuando lo buscas tienes que poner "txt" en el findcontrol... acuerdate que ese es el Id de tu textbox.

    TextBox txt2 = ((TextBox)GridView1.Rows[item.RowIndex].FindControl("txt"));

    string resultado = txt2.text; --> aqui lo tienes en string

    • Marcado como respuesta mike-sm jueves, 8 de agosto de 2013 17:55
    jueves, 8 de agosto de 2013 17:26

Todas las respuestas

  • mejor recuperalos asi.

    TextBox txt2 = ((TextBox)GridView1.Rows[item.RowIndex].FindControl("TextBox2"));

    string resultado = txt2.text; --> aqui lo tienes en string

    int res = Convert.ToInt32(resultado); ---> aqui lo tienes en int

    Saludos.

    jueves, 8 de agosto de 2013 16:12
  • Gracias pero no me funciona porque me marca error al convertir a entero ya que la variable resultado recibe el valor "" (de string, vacio) ya que así no funciona, no recibe el valor del TextBox (dentro del gridView) es un itemTemplate. Alguna otra sugerencia?

    jueves, 8 de agosto de 2013 16:20
  • estas colocando esto en tu textbox---> Text='<%# Eval("Valor")%>'??

    ejemplo:

    <asp:TextBox ID="txt2" Text='<%# Eval("Valor")%>' runat="server"></asp:TextBox>  

    y otra pregunta... donde estas cargando tu GridView?? si es en el page_load acuerdate de ponerlo dentro del 

    if (!ispostback)

    Saludos

    jueves, 8 de agosto de 2013 16:25
  • Si lo tengo en Page_Load si tengo if (!ispostback), esto no lo tengo: <asp:TextBox ID="txt2" Text='<%# Eval("Valor")%>' runat="server"></asp:TextBox> (para que esto?)  porque no quiero evaluar algún valor lo que quiero es teclear un valor ahi (texto o numero) y luego obtener ese valor en el código, pero solo me resulta el valor de "" es decir string  vació "".
    jueves, 8 de agosto de 2013 16:32
  • Ok, el Text='<%# Eval("Valor")%>' no tiene nada que ver, eso es para llenar datos dinamicamente... desde donde capturas el valor del textbx?? desde un boton fuera de la grilla?? 
    jueves, 8 de agosto de 2013 16:49
  • Esta bien, el botón esta fuera del gridView. El TextBox esta dentro del gridView. Gracias por el información. 
    jueves, 8 de agosto de 2013 16:58
  • Si dejo esta parte que me dices sale el error:
    DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'valor'. 

    Aun no he podido obtener el valor del TextBox.Text dentro de GridView, el Text es "", alguna otra sugerencia?

    jueves, 8 de agosto de 2013 17:08
  • Quita Text='<%# Eval("Valor")%>' ... porque eso solo se usa para llenar ..... por que no me muestras mejor el codigo de tu gridview y como lo cargas... porque la forma de recuperarlo como te la copie esta bien. 
    jueves, 8 de agosto de 2013 17:13
  • protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
            DataTable tabla = (DataTable) Session["tabla"];
            gv.DataSource = tabla;
            gv.DataBind();
            }

        }

    ...

    ...

    TextBox txt = (TextBox)gv.Rows[i].Cells[7].FindControl("txt");


    • Editado mike-sm jueves, 8 de agosto de 2013 17:21
    jueves, 8 de agosto de 2013 17:16
  • ese TextBox txt es el textbox que esta en tu gridview??? ... cuantos textbox tienes en tu Gview??? si tienes ese solo entonces cuando lo buscas tienes que poner "txt" en el findcontrol... acuerdate que ese es el Id de tu textbox.

    TextBox txt2 = ((TextBox)GridView1.Rows[item.RowIndex].FindControl("txt"));

    string resultado = txt2.text; --> aqui lo tienes en string

    • Marcado como respuesta mike-sm jueves, 8 de agosto de 2013 17:55
    jueves, 8 de agosto de 2013 17:26
  • Ya lo probé:

    TextBox txt = (TextBox)gv.Rows[i].FindControl("txt");

     Gracias! @ablanco
    jueves, 8 de agosto de 2013 17:55
  • El post lleva tiempo, pero necesito resolver esto ahora.

    Usé el codigo, y me da un error en esa misma linea

    TextBox txt2 = ((TextBox)GridView1.Rows[item.RowIndex].FindControl("txt"));

    System.NullReferenceException: 'Referencia a objeto no establecida como instancia de un objeto.'

    text2 was null.
    sábado, 29 de septiembre de 2018 8:19