<Columns>
DataNavigateUrlFormatString="./clientes_detalles.aspx?
idcli={0}"
NavigateUrl="./clientes_detalles.aspx?idcli=id"
SortExpression="id_cliente" Text="Ver" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
¿como hago para que me muestre una imagen (Imagen de Ver y otra de
Borrar) a cada columna?
Para la columna de Ver, he intentado convertirla a template:
<asp:TemplateField SortExpression="id_cliente">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# Eval("id_cliente", "./clientes_detalles.aspx?
idcli={0}") %>'
Text="Ver"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
¿Pero como hago para meter la url de la imagen?
He intentado crear un template sin convertir nada y he metido un
imagenbutton:
<asp:TemplateField><ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server"
ImageUrl="imagenes/ver.ico" /></ItemTemplate></asp:TemplateField>
pero , ¿Como hago para que realize la llamada a la pagina segun
clientes_detalles.aspx?idcli={0}?
¿Y para la segunda columna de borrar como seria?
Por ultimo es posible realizar eso sin utilizar codebehing para no
meter codigo en el evento rowdatabound del grid¿¿
Gracias
Con una columna HyperLink
-------------------------------------------------------------
<asp:TemplateField HeaderText="Enlace">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
ImageUrl="~/imagenes/avatarJose.jpg"
Text='<%# Eval("CategoryID") %>'
NavigateURL='<%# Eval("CategoryID", "~/categoria.aspx?id={0}")
%>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
Con una columna ImageButton
-------------------------------------------------------------
<asp:TemplateField HeaderText="Enlace">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server"
ImageUrl="~/imagenes/avatarJose.jpg"
PostBackUrl='<%# Eval("CategoryID", "~/categoria.aspx?id={0}")
%>' />
</ItemTemplate>
</asp:TemplateField>
Todo esto lo puedes realizar por codigo... en el evento RowDataBound
Protected Sub gvTuGrilla_RowDataBound(ByVal sender As Object, ByVal
e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
gvNoticias.RowDataBound
Select Case e.Row.RowType
Case DataControlRowType.DataRow
Dim unValor As Int32 =
CType(DataBinder.Eval(e.Row.DataItem, "unValor"), Int32)
Dim btnEjemplo As ImageButton =
Ctype(e.Row.FindControl("btnEjemplo"), ImageButton)
btnEjemplo.ImageUrl = "~/imagenes/iconos/
icoEjemplo2.gif"
btnEjemplo.NavigateURL = "pagina.aspx?
valor=" & unValor.ToString
End Select
End Sub
Espero que te sirva de ayuda o guia
______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja
y para este tipo de columna:
<Columns>
<asp:CommandField ShowDeleteButton="True"
DeleteImageUrl="./imagenes/eliminar.ico" ButtonType="Image" />
</Columns>
con el este evento:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db As ImageButton = CType(e.Row.Cells(6).Controls(0),
ImageButton)
db.OnClientClick = String.Format("return confirm('¿Está
seguro que desea eliminar el cliente seleccionado?');")
End If
End Sub
¿Por que no salta el evento del rowdeleted al ser en vez de linkbutton
un imagenbutton?
Protected Sub GridView1_RowDeleted(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewDeletedEventArgs) Handles
GridView1.RowDeleted
If e.Exception Is Nothing Then
mensaje.verMensaje(Me, "Cliente Borrado con Éxito")
Else
mensaje.verMensaje(Me, "ERROR")
e.ExceptionHandled = True
End If
End Sub
Si funciona si pongo:
<Columns>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
y
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db As linkButton = CType(e.Row.Cells(6).Controls(0),
IlinkButton)
db.OnClientClick = String.Format("return confirm('¿Está
seguro que desea eliminar el cliente seleccionado?');")
End If
End Sub
¿Que es lo que hago mal?...O ¿hay otra forma para solucionarlo?
Muchas gracias
y para este tipo de columna:
<Columns>
<asp:CommandField ShowDeleteButton="True"
DeleteImageUrl="./imagenes/eliminar.ico" ButtonType="Image" />
</Columns>
con el este evento:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db As ImageButton = CType(e.Row.Cells(6).Controls(0),
ImageButton)
db.OnClientClick = String.Format("return confirm('¿Está
seguro que desea eliminar el cliente seleccionado?');")
End If
End Sub
¿Por que no salta el evento del rowdeleted al ser en vez de linkbutton
un imagenbutton?
Protected Sub GridView1_RowDeleted(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewDeletedEventArgs) Handles
GridView1.RowDeleted
If e.Exception Is Nothing Then
mensaje.verMensaje(Me, "Cliente Borrado con Éxito")
Else
mensaje.verMensaje(Me, "ERROR")
e.ExceptionHandled = True
End If
End Sub
Si funciona si pongo:
<Columns>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
y
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db As linkButton = CType(e.Row.Cells(6).Controls(0),
IlinkButton)
db.OnClientClick = String.Format("return confirm('¿Está
seguro que desea eliminar el cliente seleccionado?');")
End If
End Sub
¿Que es lo que hago mal?...O ¿hay otra forma para solucionarlo?
Muchas gracias
On 14 ene, 20:47, "Jose A. Fernandez" <fernande...@gmail.com> wrote:
y para este tipo de columna:
<Columns>
<asp:CommandField ShowDeleteButton="True"
DeleteImageUrl="./imagenes/eliminar.ico" ButtonType="Image" />
</Columns>
con el este evento:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db As ImageButton = CType(e.Row.Cells(6).Controls(0),
ImageButton)
db.OnClientClick = String.Format("return confirm('¿Está
seguro que desea eliminar el cliente seleccionado?');")
End If
End Sub
¿Por que no salta el evento del rowdeleted al ser en vez de linkbutton
un imagenbutton?
Protected Sub GridView1_RowDeleted(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewDeletedEventArgs) Handles
GridView1.RowDeleted
If e.Exception Is Nothing Then
mensaje.verMensaje(Me, "Cliente Borrado con Éxito")
Else
mensaje.verMensaje(Me, "ERROR")
e.ExceptionHandled = True
End If
End Sub
Si funciona si pongo:
<Columns>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
y
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db As linkButton = CType(e.Row.Cells(6).Controls(0),
IlinkButton)
db.OnClientClick = String.Format("return confirm('¿Está
seguro que desea eliminar el cliente seleccionado?');")
End If
End Sub
¿Que es lo que hago mal?...O ¿hay otra forma para solucionarlo?
Muchas gracias
On 14 ene, 20:47, "Jose A. Fernandez" <fernande...@gmail.com> wrote:
<Columns>
......
<asp:CommandField ShowDeleteButton="True"
DeleteImageUrl="./imagenes/eliminar.ico" ButtonType="Image" />
</Columns>
Protected Sub GridView1_RowDeleted(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewDeletedEventArgs) Handles
GridView1.RowDeleted
If e.Exception Is Nothing Then
mensaje.verMensaje(Me, "Cliente Borrado con Éxito")
Else
'mensaje.verMensaje(Me,
e.Exception.InnerException.Message.ToString)
mensaje.verMensaje(Me, "ERROR: Preguntar si se borra todo
lo referente a cliente o se borra lo que tenga y ya esta")
e.ExceptionHandled = True
End If
End Sub
pero he quitado el este codigo:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
'If e.Row.RowType = DataControlRowType.DataRow Then
' Dim db As ImageButton = CType(e.Row.Cells(6).Controls(0),
ImageButton)
' db.OnClientClick = String.Format("return confirm('¿Está
seguro que desea eliminar el cliente seleccionado?');")
' End If
End Sub
¿Que tiene que ver el onclientclick para que funcione cuando es un
linkbutton y cuando es un imagebutton NO?
Para mí....un misterio......
¿Alguna ayuda?
Gracias
1) Del post anterior,¿cómo hago para que me funcione la confirmación
del borrado en la columna con una imagen?
2) Resulta que en otra pagina tngo otro gridview:
<Columns>
<asp:CommandField SelectText="Ver" ShowSelectButton="True" /
>
</Columns>
Protected Sub GridView2_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView2.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db2 As linkbutton = CType(e.Row.Cells(4).Controls(0),
linkbutton)
db2.OnClientClick = String.Format("window.open('./
verdoc.aspx?
id={0}','','location=no,menubar=yes,scrollbars=yes,toolbar=yes,resizable=yes,top=1,Left=1,height=800,width=600');",
GridView2.DataKeys(e.Row.DataItemIndex).Value.ToString())
End If
End Sub
que funciona...si ahora cambio al siguiente código:
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="ImageButton1"
runat="server" imageurl="./imagenes/editar2.ico"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
Protected Sub GridView2_RowDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView2.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim db2 As ImageButton = CType(e.Row.Cells(4).Controls(0),
ImageButton)
db2.OnClientClick = String.Format("window.open('./
verdoc.aspx?
id={0}','','location=no,menubar=yes,scrollbars=yes,toolbar=yes,resizable=yes,top=1,Left=1,height=800,width=600');",
GridView2.DataKeys(e.Row.DataItemIndex).Value.ToString())
End If
End Sub
¿Porque me da error este error en la conversión CTYPE?
No se puede convertir un objeto de tipo 'System.Web.UI.LiteralControl'
al tipo 'System.Web.UI.WebControls.ImageButton'
¿Como convierto esto para que me funcione?
Gracias
> > ¿Por que no salta el evento delrowdeletedal ser en vez de linkbutton
> > > > Pues tengo migridviewcon las siguientes columna(pongo las que me
Cuando quiero implementar algo similiar hago una columna template... y
alli puedes utilizar un Button o un LinkButton que le asignas un
comando... especial en el gridview (y en la mayoria de los controles
que se enlazan a datos) que es el comando delete, simplemente
agregandole esta propiedad CommandName="Delete", es decir el gridview
disparara/provicara automaticamente los eventos RowDeleting y
RowDeleted.
En base a tu pregunta arme un post en mi blog, espeor que te sirva:
http://geeks.ms/blogs/fernandezja/archive/2008/01/16/gridview-confirmaci-243-n-en-el-bot-243-n-enlace-imagen-de-eliminar.aspx
Mira un ejemplo:
<asp:TemplateField HeaderText="Ejemplo Eliminar">
<ItemTemplate>
<asp:Button ID="btnDelete" Text="Eliminar 1" runat="server"
OnClientClick="return confirm('¿Esta seguro de eliminar este
registro?');"
CommandName="Delete" />
<asp:LinkButton ID="linkEliminar" runat="server"
OnClientClick="return confirm('¿Esta seguro de eliminar este
registro?');"
CommandName="Delete">Eliminar 2</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
(...)El control GridView también provoca otros eventos especializados
al hacer clic en ciertos botones (botones cuya propiedad CommandName
presenta valores como "Delete", "Update" y "Page"). Al utilizar uno de
estos botones, se debería considerar la posibilidad de controlar uno
de los eventos especializados proporcionados por el control (como
RowDeleted o RowDeleting).(...)
Con respecto a la segunda pregunta:
Conviene buscar los controles de esta forma
Si tienes
<ItemTemplate>
<asp:ImageButton ID="imgEditar"
runat="server" imageurl="./imagenes/editar2.ico"/>
</ItemTemplate>
Lo buscas asi:
Dim imgEditar As ImageButton = CType(e.Row.FindControl("imgEditar"),
ImageButton)
Enlaces:
---------------
How to: Respond to Button Events in DataList, Repeater, or GridView
Items
http://technet.microsoft.com/es-es/library/df6hth3s.aspx
GridViewCommandEventHandler (Delegado)
http://technet.microsoft.com/es-es/library/system.web.ui.webcontrols.gridviewcommandeventhandler(VS.80).aspx
GridView.RowCommand (Evento)
http://msdn2.microsoft.com/es-es/library/system.web.ui.webcontrols.gridview.rowcommand.aspx
______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja
Pues nada...esto va de maravilla...
De nuevo muchas gracias por tu dedicación,
Saludos
On 16 ene, 19:44, "Jose A. Fernandez" <fernande...@gmail.com> wrote:
> Hola Array
>
> Cuando quiero implementar algo similiar hago una columna template... y
> alli puedes utilizar un Button o un LinkButton que le asignas un
> comando... especial en el gridview (y en la mayoria de los controles
> que se enlazan a datos) que es el comando delete, simplemente
> agregandole esta propiedad CommandName="Delete", es decir el gridview
> disparara/provicara automaticamente los eventos RowDeleting y
> RowDeleted.
> En base a tu pregunta arme un post en mi blog, espeor que te sirva:http://geeks.ms/blogs/fernandezja/archive/2008/01/16/gridview-confirm...
> GridViewCommandEventHandler (Delegado)http://technet.microsoft.com/es-es/library/system.web.ui.webcontrols....
>
> GridView.RowCommand (Evento)http://msdn2.microsoft.com/es-es/library/system.web.ui.webcontrols.gr...
> ...
>
> leer más »