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

Gridview. Como puedo colocar el foco en un control secundario

Estas en el tema de Gridview. Como puedo colocar el foco en un control secundario en el foro de ASPX (.net) en Foros del Web. Ayuda!!! Tengo un gridview que muestra una lista de datos y tengo activadas las funciones de editar y actualizar, para esto tengo varios textbox dentro ...
  #1 (permalink)  
Antiguo 23/04/2009, 10:37
 
Fecha de Ingreso: abril-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Gridview. Como puedo colocar el foco en un control secundario

Ayuda!!!
Tengo un gridview que muestra una lista de datos y tengo activadas las funciones de editar y actualizar, para esto tengo varios textbox dentro de <EditItemTemplate>

Mi pregunta es la siguiente, que necesito, para que al momento de hacer click en el boton de edición, me coloque automaticamente el foco en un textbox de la fila

Espero haberme explicado bien..
  #2 (permalink)  
Antiguo 24/04/2009, 07:04
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: Gridview. Como puedo colocar el foco en un control secundario

Hola.

Podrías capturar el evento de la grilla rowEditing y ahí especificas que control queres que tenga el foco:
Código:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            //Normal turning to edit
            GridView1.EditIndex = e.NewEditIndex; 
            BindGrid();

            //Set the focus to control on the edited row
            GridView1.Rows[e.NewEditIndex].FindControl("txtEdit").Focus();
        }
Donde "txtEdit" es el control que tenga el foco.
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #3 (permalink)  
Antiguo 28/04/2009, 14:09
 
Fecha de Ingreso: abril-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Respuesta: Gridview. Como puedo colocar el foco en un control secundario

Gracias por responder "Trulala de cordoba"...


Lo he intentado de estas dos maneras en VB

grv1.EditIndex = e.NewEditIndex
grv1.DataBind()
grv1.Rows(e.NewEditIndex).Cells(5).FindControl("gr v1_txt1").Focus()

(que es exactamente lo mismo que me respondes)


tambien hice la prueba tratando de modificar las propiedades del textbox

Dim txt As TextBox
txt = grv1.Rows(e.NewEditIndex).Cells(5).NamingContainer .FindControl("grv1_txt1")
txt.Focus()
txt.Text = "prueba"
txt.BackColor = Drawing.Color.Red


en ambos casos solo coloca la fila en modo de edición, aún no se donde puede estar mi error.

Espero que alguien me puede dar una idea
  #4 (permalink)  
Antiguo 29/04/2009, 19:32
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: Gridview. Como puedo colocar el foco en un control secundario

Hola.
Algo debe estar pasando, fijate que estes colocando bien el nombre de tu TextBox. Te dejo un ejemplo muy simple pero que funciona, pone el foco al editar el textbox3 que es el de la edad:
Código:
<%@ Page Language="VB" %>

<%@ Import Namespace="System.Collections.Generic" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not IsPostBack Then
            GridView1.DataSource = ObtenerDatos()
            GridView1.DataBind()
        End If
    End Sub
    Private Function ObtenerDatos() As ArrayList
        Dim xDatos As New ArrayList
        xDatos.Add("Uno")
        xDatos.Add("Dos")
        Return xDatos
    End Function

    Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs)
        GridView1.EditIndex = e.NewEditIndex
        GridView1.DataSource = ObtenerDatos()
        GridView1.DataBind()
        GridView1.Rows(e.NewEditIndex).FindControl("TextBox3").Focus()
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Página sin título</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            onrowediting="GridView1_RowEditing">
            <Columns>
                <asp:TemplateField HeaderText="Nombre">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text=''></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text=''></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Apellido">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox2" runat="server" Text=''></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text=''></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Edad">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox3" runat="server" Text=''></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label3" runat="server" Text=''></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:CommandField ShowEditButton="True" />
            </Columns>
        </asp:GridView>
    
    </div>
    </form>
</body>
</html>
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #5 (permalink)  
Antiguo 06/05/2009, 16:11
 
Fecha de Ingreso: abril-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: Gridview. Como puedo colocar el foco en un control secundario

Gracias una vez mas por responder "Trulala", aún estoy haciendo pruebas, lo que pasa es que estoy llenando la grilla usando un sqldatasource para obtener los datos de varias tablas, y creo que es ahi donde se pierde porque hace un barrido de los datos despues de asignarle el foco, ahora voy a intentarlo con un dataset.
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 13:38.