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

Problema Menu en Gridview

Estas en el tema de Problema Menu en Gridview en el foro de ASPX (.net) en Foros del Web. Hola a todos :), En mi aplicación uso un gridview,a su vez este tiene un "Menu Contextual" para cada fila. El Menu Contextual puedo abrilo ...
  #1 (permalink)  
Antiguo 12/08/2009, 10:48
 
Fecha de Ingreso: julio-2007
Ubicación: Colombia
Mensajes: 61
Antigüedad: 16 años, 9 meses
Puntos: 0
Problema Menu en Gridview

Hola a todos :),
En mi aplicación uso un gridview,a su vez este tiene un
"Menu Contextual" para cada fila.

El Menu Contextual puedo abrilo con la propiedad onmouseover que le asigno al panel
(que está ubicado en la primera celda de cada fila), sin embargo debo cerrarlo con un click.
El problema se presenta si paso el mouse sobre todos los paneles de menu contextual.

Me gustaría que cuando el mouse pase sobre el siguiente panel se cierre el anterior,
sin tener que usar la propiedad onclick.

Ejemplo:

El Mouse pasa por por los paneles de las filas 1, 2 y 3.
como veran las filas 1 y 2 no se cierran.

..........PANELES
fila 1 | Menu | dato1 |dato2
fila 2 | Menu | dato1 |dato2
fila 3 | Menu | dato1 |dato2
fila 4 |...........| dato1 |dato2
fila 5 |...........| dato1 |dato2
fila 6 |...........| dato1 |dato2

Código:

HTML:

<asp:GridView ID="GridView1" DataKeyNames="IdMotivo" OnRowDataBound="GridView1_RowDataBound" OnPageIndexChanging="GridView1_PageIndexChanging" runat="server" CssClass="grid" Width="100%" AutoGenerateColumns="False" PageSize="6" AllowPaging="True">
<Columns>
<asp:TemplateField>
<ItemStyle Width="4px" />
<ItemTemplate>
<div id="popupMenuGridView" runat="server" style="display:none; z-index:101; width:200px; position:absolute; height:38px">
<ul class="SimpleContextMenu" >
<li id="liImageButton1" runat="server">
<asp:Image ID="Image1" runat="server" ImageUrl="~/xhtmlcss/img/detalle02.png" />
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">Detalles</asp:LinkButton>
</li>
</ul>
</div>
<div id="panelContextmenuId" runat="server" class="panelContextmenu">
<asp:Image ID="ImgToolBar" runat="server" ImageUrl="~/xhtmlcss/img/context.png" />
</div>
</ItemTemplate>
</asp:TemplateField>
...otras columnas...
.CS


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataTable dataServicio = new DataTable();

if (e.Row.RowType == DataControlRowType.DataRow)
{

//configuramos el contextmenu
LinkButton lbtnAnotacion = (LinkButton)e.Row.Cells[0].FindControl("LinkButton1");
LinkButton lbtnCancelar = (LinkButton)e.Row.Cells[0].FindControl("LinkButton1");
LinkButton lbtnDetalle = (LinkButton)e.Row.Cells[0].FindControl("LinkButton1");
LinkButton lbtnCalificar = (LinkButton)e.Row.Cells[0].FindControl("LinkButton1");

HtmlGenericControl panel = (HtmlGenericControl)e.Row.Cells[0].FindControl("popupMenuGridView");
HtmlGenericControl cMenu = (HtmlGenericControl)e.Row.Cells[0].FindControl("panelContextmenuId");

string showPopup = "ShowPopup('" + lbtnAnotacion.ClientID + "','" + lbtnCancelar.ClientID + "','" + lbtnDetalle.ClientID + "','" + lbtnCalificar.ClientID + "','" + panel.ClientID + "','" + e.Row.ClientID + "')";
string hidePopup = "HidePopup('" + lbtnAnotacion.ClientID + "','" + lbtnCancelar.ClientID + "','" + lbtnDetalle.ClientID + "','" + lbtnCalificar.ClientID + "','" + panel.ClientID + "','" + e.Row.ClientID + "')";

cMenu.Attributes.Add("onmouseover", "javascript:" + showPopup);
e.Row.Attributes.Add("onclick", "javascript:" + hidePopup);


.JS

//***************************************** configura el menu en el gridview

//Shows DIV popup commands for gridview
function ShowPopup(lbtn1,lbtn2,lbtn3,lbtn4, panel, gridviewRow)
{
var link1 = document.getElementById(lbtn1);
var link2 = document.getElementById(lbtn2);
var link3 = document.getElementById(lbtn3);
var link4 = document.getElementById(lbtn4);
var pnl = document.getElementById(panel);
var row= document.getElementById(gridviewRow);

pnl.style.display = "inline";
if(link1 != null)
link1.style.display = "inline";
if(link2 != null)
link2.style.display = "inline";
if(link3 != null)
link3.style.display = "inline";
if(link4 != null)
link4.style.display = "inline";
}

//Hides DIV popup commands for gridview
function HidePopup(lbtn1,lbtn2,lbtn3,lbtn4, panel, gridviewRow)
{
var link1 = document.getElementById(lbtn1);
var link2 = document.getElementById(lbtn2);
var link3 = document.getElementById(lbtn3);
var link4 = document.getElementById(lbtn4);
var pnl = document.getElementById(panel);
var row= document.getElementById(gridviewRow);

pnl.style.display = "none";
if(link1 != null)
link1.style.display = "none";
if(link2 != null)
link2.style.display = "none";
if(link3 != null)
link3.style.display = "none";
if(link4 != null)
link4.style.display = "none";
}

Ayuda.

Saludos y Gracias de Antemano.
  #2 (permalink)  
Antiguo 12/08/2009, 15:11
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Problema Menu en Gridview

Podrias probar ejecutando la funcion HidePopup en el evento onmouseout, algo asi:

cMenu.Attributes.Add("onmouseover", "javascript:" + showPopup);
e.Row.Attributes.Add("onmouseout", "javascript:" + hidePopup);


Saludos.
  #3 (permalink)  
Antiguo 12/08/2009, 15:34
 
Fecha de Ingreso: julio-2007
Ubicación: Colombia
Mensajes: 61
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Problema Menu en Gridview

Hola ltzcoatl,
gracias por responder...

el modo que tu me planteas tiene un comportamiento extraño:
se abre y se cierra rápidamente. :(
  #4 (permalink)  
Antiguo 12/08/2009, 15:44
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Problema Menu en Gridview

Y si lo pones asi:


cMenu.Attributes.Add("onmouseover", "javascript:" + showPopup);
cMenu.Attributes.Add("onmouseout", "javascript:" + hidePopup);

Agregarle a cMenu el evento onmouseout, asi cuando salga el puntero del div se deberia ocultar.

Saludos.
  #5 (permalink)  
Antiguo 12/08/2009, 15:54
 
Fecha de Ingreso: julio-2007
Ubicación: Colombia
Mensajes: 61
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Problema Menu en Gridview

sigue igual ,
en ésta caso, el mouse ingresa al panel y el menú aparece,
sin embargo se cierra en el mismo instante, ya que el panel es pequeño y no puedo colocarlo mas grande porque sino aumenta el tamaño de la columna. :S
  #6 (permalink)  
Antiguo 12/08/2009, 16:27
 
Fecha de Ingreso: julio-2007
Ubicación: Colombia
Mensajes: 61
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Problema Menu en Gridview

Busco algo exactamente a ésto:

http://www.devexpress.com/Support/Center/e/E38.aspx
(Run Example Online).

Pero esta no puede ser la solución para mi aplicación.
  #7 (permalink)  
Antiguo 13/08/2009, 08:04
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Problema Menu en Gridview

Puedes usar AJAX.NET ? tal vez esto te sirva : http : // www .asp.net/AJAX/AjaxControlToolkit/Samples/HoverMenu/HoverMenu.aspx

Saludos.
  #8 (permalink)  
Antiguo 15/08/2009, 21:01
 
Fecha de Ingreso: julio-2007
Ubicación: Colombia
Mensajes: 61
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Problema Menu en Gridview

gracias ltzcoatl,

use esta herramienta y me funciona muy bien.
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 12:54.