Foros del Web » Programando para Internet » ASPX (.net) »

Usar DataGridView

Estas en el tema de Usar DataGridView en el foro de ASPX (.net) en Foros del Web. Hola buenas noches amigos !! Bueno, estoy emepzando con ASP.NET 2.0 y a la hora de trabaja con el DataGridView me han surgido un par ...
  #1 (permalink)  
Antiguo 05/12/2006, 18:03
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Usar DataGridView

Hola buenas noches amigos !!


Bueno, estoy emepzando con ASP.NET 2.0 y a la hora de trabaja con el DataGridView me han surgido un par de dudas que espero me las puedan solucionar, jejeje.

Tengo un DataGridView con dos columnas creadas, una que la enlazo con datos de un DataTable y otra que tiene botones(Tipicas pruebas de principiante, jeje). Las dos son de Tipo Templatecolumn

En la Columna 1, Tengo el HeaderTemplate que tengo puesta una Label, en el FooterTemplate una caja de texto (será para meter un dato nuevo) y en el EditItemTemplate otra caja de texto para cuando esté en modo Edición.

En la columna 2, tengo puesto en el EditItemTemplate que me muestre dos LinkButton uno de guardar y otro de cancelar. Y en el ItemTemplate un LinkButton que es Editar.

Mi DataGridView le he puesto el evento:
OnRowCommand="AccionesViewGrid"
Código:
    private System.Data.DataTable tbDatos;
    private SqlConnection objCn;
    private SqlDataAdapter objDa;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            objCn = new SqlConnection("Data Source=localhost;Initial Catalog=bdEmpresa;User Id=sa;Password=1982sa;");
            objDa = new SqlDataAdapter("select idcliente, nombre from tclientes", objCn);
            tbDatos = new DataTable();
            objDa.Fill(tbDatos);

            this.GridView1.DataSource = tbDatos;
            GridView1.DataBind();
        }
    }
    

    public void AccionesViewGrid(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e)
    {
        if (e.CommandName == "editarRegistro")
        {
            GridView1.EditIndex = System.Convert.ToInt16(e.CommandArgument);
        }            
    }

    private int indiceLinksEditar = 0;
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        TextBox objTxt;
        LinkButton lnEditar;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            lnEditar = (LinkButton)e.Row.FindControl("lEditar");
            lnEditar.CommandArgument = indiceLinksEditar.ToString();
            indiceLinksEditar++;
        }
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            objTxt = (TextBox)e.Row.FindControl("txtNNombre");
            objTxt.Text = "Esto es un texto";
        }
        
    }

Bueno, pues cuando pulso el botón de Editar la primera vez, se recarga la página, pero en el DataGrid no aparece la fila seleccionada en modo Editable (Es decir, no me aparece la caja de texto). Cuando vuelvo a pulsar el botón de Editar entonces si, me pone en modo edición la fila en la que pulsé el botón. Entonces, ¿Por que no me lo hace la primera vez y si la segunda?

Y otra pregunta, cuando pulse la segunda vez y me puso la fila en modo edición, cuando pulso en otra fila para editar, esta se pone en modo edición y la que estaba anteriormente se pone otra vez en modo normal, pero... ni el label aparece con el texto del campo y el botón de editar desaparece para aparecer el de cancelar.... ¿Alguien sabe por qué pùede ser?

En fin, espero haberme explicado y que puedan ayudarme, por que la verdad estoy desesperado por aprender a usar el DataGridView.

Gracias y un fuerte saludo.
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:47.