ASP.NET - seleccion en gridview

   
Vista:

seleccion en gridview

Publicado por nenure (56 intervenciones) el 27/03/2008 12:07:31
Hola! Tengo un gridview en una de mis paginas que he realizado y he visto que solo puedo seleccionar las filas utilizando el metodo de seleccion. Como podria hacer para seleccionarlo en vez de dar al boton con los cursores arriba, abajo? Si alguien me puede ayudar por favor... es que es mucho mas rapido y cuando este encima de cada fila que me saque el detailsview correspondiente. Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:seleccion en gridview

Publicado por x (445 intervenciones) el 27/03/2008 16:33:14
La verdad non pude entender exactamente lo que quieres, asi como asi, lo unico que me queda es:

1. Cuando se cree cada fila crea un LinkButton, no le agregues texto, al command argument (o al command name) agregale el indice de la fila, su ID (no recuerdo si es necesario), y establece un handler para su evento click.

2. Agregalo a la coleccion de controles del GridView.

3. A la fila, ponle en su atributo onclick (miFila.Attrubutes["onclick"]) lo que te devuelva Page.ClientScript.GetPostBackClientHyperlink(miLink, "")

Espero haberme dado a entender y te sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por nenure (56 intervenciones) el 27/03/2008 16:52:12
Hola! No te he entendido muy bien lo que tengo que hacer. Mi idea es, cuando tienes un gridview y quieres seleccionar una fila, tienes que darle al link de seleccionar que te proporciona el mismo gridview. A mi me gustaria hacer que en vez de tener que darle al boton que el primero se quede marcado y los siguientes que puedas marcarlos con los botones de arriba y abajo, como en muchos sitios. Cuando este seleccionado con los botones arriba y abajo, me gustaria que directamente saliese el details view. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por @vm (196 intervenciones) el 27/03/2008 20:36:47
1. Para que se seleccione la primer fila una vez cargado el gridview, en el code behind programa el evento DataBound del gridview la seleccion:

Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound
GridView1.SelectedIndex = 0
End Sub

2. Para mover seleccion arriba o abajo:
En el behind del botón arriba:
If GridView1.SelectedIndex > 0 Then
GridView1.SelectedIndex = GridView1.SelectedIndex - 1

'Mas código si lo deseas

End If

En el behind del botón abajo:
If GridView1.SelectedIndex < (GridView1.Rows.Count - 1) Then
GridView1.SelectedIndex = GridView1.SelectedIndex + 1

'Mas código si lo deseas

End If

3. Para que visualmente notes que fila esta seleccionada define propiedades en SelectedRowStyle del GridView, ejemplo:

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
<SelectedRowStyle BackColor="#E0E0E0" />
</asp:GridView>

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por nenure (56 intervenciones) el 28/03/2008 10:41:57
Hola! Que bien! Es lo mas parecido a lo que yo quiero lo que me has mandado. Eso es lo que quiero hacer pero en vez de tener que darle a los botones arriba y abajo, poder hacerlo con los que te vienen en el teclado, es decir las flechas de arriba y abajo. Muchas gracias de todas formas, si por casualidad sabes hacerlo te lo agradeceria muchisimo. Por cierto, tengo el gridview paginado y no me sigue el boton para abajo si se termina la pagina. Ojala yo te pudiese ayudar en algo, ya que gracias a ti he conseguido mucho.Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por @vm (196 intervenciones) el 28/03/2008 22:56:08
Aqui te va otro ejemplo se mueve arriba y abajo presionando la tecla s y b respectivamente, si llega al final de la página avanza a la siguiente y viceversa.

asegúrate de agregar esta propiedad AutoEventWireup="false" en la definición de la página <%@ Page ... EnableEventValidation="false" ... %>

----------------------- aspx --------------------------

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

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Página sin título</title>
<script language="javascript" type="text/javascript">
function TeclasPresionadas(elEvento)
{
var evento = elEvento || window.event;
var codigoCaracter = evento.charCode || evento.keyCode;
var caracter = String.fromCharCode(codigoCaracter);

if ((caracter=="s") || (caracter=="S"))
{
__doPostBack("sArriba");
}

if ((caracter=="b") || (caracter=="B"))
{
__doPostBack("sAbajo");
}
}
</script>
</head>
<body onkeypress="TeclasPresionadas(event)">
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server">
<asp:ListItem Value="Ninguno" Text="Seleccione un color" Selected="True"></asp:ListItem>
<asp:ListItem Value="Rojo" Text="Rojo"></asp:ListItem>
<asp:ListItem Value="Negro" Text="Negro"></asp:ListItem>
<asp:ListItem Value="Blanco" Text="Blanco"></asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:GridView ID="GridView1" runat="server" AllowPaging="true" PageSize="2" DataSourceID="SqlDataSource1">
<SelectedRowStyle BackColor="#E0E0E0" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Cadena_Conexion" ProviderName="System.Data.SqlClient" SelectCommand="SELECT [IdMiRegistro], [Nombre], [Color] FROM [MisRegistros] WHERE ([Color] = @Color)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="Color" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>

----------------------- código --------------------------

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Request.Params("__EVENTTARGET") = "sArriba" Then
SeleccionarArriba()
End If
If Request.Params("__EVENTTARGET") = "sAbajo" Then
SeleccionarAbajo()
End If
End Sub

Protected Sub SeleccionarArriba()
If GridView1.SelectedIndex > 0 Then
GridView1.SelectedIndex = GridView1.SelectedIndex - 1
Else
If GridView1.PageIndex > 0 Then
GridView1.PageIndex = GridView1.PageIndex - 1
GridView1.SelectedIndex = (GridView1.Rows.Count - 1)
End If
End If
End Sub

Protected Sub SeleccionarAbajo()
If GridView1.SelectedIndex < (GridView1.Rows.Count - 1) Then
GridView1.SelectedIndex = GridView1.SelectedIndex + 1
Else
If GridView1.PageIndex < (GridView1.PageCount - 1) Then
GridView1.PageIndex = GridView1.PageIndex + 1
GridView1.SelectedIndex = 0
End If
End If
End Sub

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
If DropDownList1.SelectedIndex > 0 Then
GridView1.SelectedIndex = 0
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por @vm (196 intervenciones) el 28/03/2008 23:02:05
Corrección en Metedo SeleccionarArriba()

Protected Sub SeleccionarArriba()
If GridView1.SelectedIndex > 0 Then
GridView1.SelectedIndex = GridView1.SelectedIndex - 1
Else
If GridView1.PageIndex > 0 Then
GridView1.PageIndex = GridView1.PageIndex - 1
GridView1.SelectedIndex = (GridView1.PageSize - 1)
End If
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por nenure (56 intervenciones) el 31/03/2008 09:15:35
Hola! Gracias por este codigo!! Funciona muy bien, lo unico malo que le veo es que cada vez que le doy al boton "b" o a "s" se recarga la pagina en vez de refrescarse solo, ya que tarda bastante en recargarse, pero muchas gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por nenure (56 intervenciones) el 31/03/2008 11:48:30
Hola! Ya he conseguido hacer con las fechas arriba y abajo en vez de con B y S, ya que me parece mas util usar las fechas para la seleccion. Mando el codigo que he usado por si alguien lo necesita, aunque lo de recargarse no he solucionado, por cada seleccion se me vuelve a cargar la pagina entera, si alguien sabe como hacer que esta seleccion sea mas rapida...

<script language="javascript" type="text/javascript">
document.onkeydown = checkKeycode
function checkKeycode(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if(keycode == 38){
__doPostBack("sArriba");
}

if(keycode == 40){
__doPostBack("sAbajo");
}
}
</script>

Gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por nessy00 (16 intervenciones) el 23/04/2008 10:17:26
Hola, llego un poco tarde, pero haber si leeis esto,

Te refresca toda la página, porque haces un postback. En vez del postback tendrías que hacer un callback.
Yo tengo el mimo problema, es decir, quiero un gridview, que con las teclas (flechas), cambie la linea seleccionada. Estoy trabajando en ello, y he conseguido con el callback que no me refresque la página, pero hay que hacer bastantes cambios de lo que tienes tu a lo que tengo yo. Mi único problema es que al cargar la página por primera vez, tengo que hacer click en un linea para que después haga caso a las flechas. Supongo que es cosa del foco o algo así.

En conclusión, sino quieres que te refresque la pagina utiliza el callback. Hay mucho codigo script, y hay que program mucho mas.

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seleccion en gridview

Publicado por Ruben Castelo (5 intervenciones) el 01/09/2008 19:04:33
No han intentado utilizar alguna tecnica AJAX ? o al menos un updatepanel del AjaxtToolkit ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar