Introducción
En este articulo analizaremos algunas alternativas utilizadas para trabajar con alertas o pedir confirmación, mediante cuadros de mensaje en un proyecto web.
El uso de javascript en un desarrollo web con asp.net puede no ser tan simple como uno imagina, pues este código es ejecutado en el cliente, mientras que código .net se encuentra en el servidor.
Esta distinción de ambientes donde es ejecutado cada lenguaje puede traer problemas al momento de integrarlo, mas que al hacer uso de controles de brindados en asp.net que son claramente diseñador para trabajar por medio de requerimiento al servidor.
Uso del alert()
El uso del alert() de javascript es muy útil para informar al usuario de un suceso en la aplicación, pero este puede ser usado antes o después del postback o acción del usuario, lo que requiere distintas técnicas en cada caso.
Para demostrar estos casos en el formulario de nombre WebForm1.aspx trataremos el uso de las alertas.
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> <script type="text/javascript"> function alerta(numero) { alert('Se ha presionado el boton: ' + numero); } </script> </head> <body> <form id="form1" runat="server"> <table> <tr> <td> <input id="btnMensaje1" type="button" value="Mensaje 1" onclick="alert('Se ha presionado el boton: 1');" /> </td> <td> <asp:Button ID="btnMensaje2" runat="server" Text="Mensaje 2" OnClientClick="alert('Se ha presionado el boton: 2');" /> </td> <td> <asp:Button ID="btnMensaje3" runat="server" Text="Mensaje 3" OnClientClick="alert('Se ha presionado el boton: 3'); return false;" /> </td> <td> <asp:Button ID="btnMensaje4" runat="server" Text="Mensaje 4" /> </td> </tr> <tr> <td> <asp:Button ID="btnMensaje5" runat="server" Text="Mensaje 5" onclick="btnMensaje5_Click" /> </td> <td> <asp:Button ID="btnMensaje6" runat="server" Text="Mensaje 6" onclick="btnMensaje6_Click" /> </td> <td> <asp:Button ID="btnMensaje7" runat="server" Text="Mensaje 7" onclick="btnMensaje7_Click" /> </td> <td> <asp:Button ID="btnMensaje8" runat="server" Text="Mensaje 8" onclick="btnMensaje8_Click" /> </td> </tr> </table> </form> </body> </html>
public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { btnMensaje4.Attributes["onclick"] = "alert('Se ha presionado el boton: 4'); return false;"; } protected void btnMensaje5_Click(object sender, EventArgs e) { string script = @"<script type='text/javascript'> alerta(5); </script>"; if(!Page.IsClientScriptBlockRegistered("alerta")) Page.RegisterStartupScript("alerta", script); } protected void btnMensaje6_Click(object sender, EventArgs e) { string script = @"<script type='text/javascript'> alerta(6); </script>"; ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false) ; } protected void btnMensaje7_Click(object sender, EventArgs e) { string script = @"<script type='text/javascript'> alert('Se ha presionado el boton: 7'); </script>"; ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false); } protected void btnMensaje8_Click(object sender, EventArgs e) { try { throw new Exception("Se ha producido un error no controlado."); } catch (Exception ex) { string script = @"<script type='text/javascript'> alert('{0}'); </script>"; script = string.Format(script, ex.Message); ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false); } } }
El código refleja distintas alternativas para trabajar con alertas, desde algunas muy simple al otras mas complejas.
btnMensaje1: Este simplemente es un botón simple de html, se hace uso del evento onclick para desplegar el alert
btnMensaje2: Este es el primer ejemplo con un botón de asp.net, vemos como el evento onclick aquí no esta disponible, se ha reemplazado por su equivalente OnClientClick. Un detalle de este método es que luego de despegar el mensaje el botón realiza el postaback de la pagina invocando los eventos del mismo.
btnMensaje3: A diferencia del anterior este introduce un pequeño truco, el agregado del “return false;”, ante un evento javascript que devuelva false, el postback del control al servidor es impedido
btnMensaje4: Este no define el evento en el html del control, sino que es en el evento Form_Load que se asigna haciendo uso de la colección Attributes. en realidad es otra forma valida de lograr lo mismo.
Suele suceder que a veces se necesita crear script con cierto dinamismo que solo se logra con código .net, de esta forma ese código javascript creado puede asignarse a un evento en un control para ser ejecutado.
btnMensaje5: En este caso se cambia un poco el concepto del ejemplo ya que aquí se muestra le mensaje a la vuelva del postback del evento del botón. Además se esta invocando a un método predefinido en el tag <script ..> del html
Esta técnica es muy útil cuando se quiere desplegar un mensaje luego de una operación realizada en el servidor.
Este hace uso de los métodos Page.IsClientScriptBlockRegistered() y Page.RegisterStartupScript(), paro debe aclararse que estos en la documentación del MSDN esta marcados como obsoletos, ya que hay nueva funcionalidad que los reemplazan.
btnMensaje6: Justamente en la implementación de este botón es que se hace uso de la forma actualizada en que se inyecta código javascript en una pagina.
Este hace uso del método ScriptManager.RegisterStartupScript y es este el que reemplaza a los método del ejemplo del btnMensaje5
btnMensaje7: Este demuestra que no siempre es necesario invocar a una funciona javascript en la pagina para mostrar una alerta, se puede generar código directo que muestre el mensaje.
btnMensaje8: Releja una alternativa muy interesante para visualizar errores que se producen en el servidor durante el procesamiento del postback del evento del botón.
En este caso se lanza un error a propósito que será capturado por el bloque try..catch, dentro de este se aplica las misma técnica descripta para en evento anteriores, solo que el mensaje a mostrar el usuario será el error que se atrapo en el servidor.
Uso del confirm()
Este aplica muchas de las técnicas ya reflejadas en el uso del alert(), pero hay ciertos detalles que es bueno remarcar.
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> <script type="text/javascript"> function Confirmacion() { var seleccion = confirm("acepta el mensaje ?"); if (seleccion) alert("se acepto el mensaje"); else alert("NO se acepto el mensaje"); //usado para que no haga postback el boton de asp.net cuando //no se acepte el confirm return seleccion; } </script> </head> <body> <form id="form1" runat="server"> <table> <tr> <td> <asp:Button ID="btnConfirmacion1" runat="server" Text="Confirmacion 1" OnClientClick="return Confirmacion();"/> </td> <td> <asp:Button ID="btnConfirmacion2" runat="server" Text="Confirmacion 2" /> </td> <td> <asp:Button ID="btnConfirmacion3" runat="server" Text="Confirmacion 3" OnClientClick="return confirm('hacer el postback del control ?');" /> </td> </tr> </table> </form> </body> </html>
public partial class WebForm2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { btnConfirmacion2.Attributes["onclick"] = "return Confirmacion();"; } }
btnConfirmacion1: Hace uso de la propiedad OnClientClick para definir el método javascript definido en la pagina.
Un punto importante es el uso de return como antecesor el nombre de la función
OnClientClick="return Confirmacion();"
El objetivo de este es evitar el postback del botón cuando no se acepte el mensaje de confirmación. Si este return es quitado se realiza la invocación al servidor se acepte o no el mensaje de confirmación.
btnConfirmacion2: Aplica la misma técnica del ejemplo anterior, solo que la asignación del evento es realizada desde el servidor.
btnConfirmacion3: Hace uso de código javascript en línea directo en el evento, sin utilizar una función definida para tratar la confirmación.
Es importante notar el uso del return delante el mensaje de confirm(), este tomara el respuesta y asignara true o false, permitiendo o no hace el postback del botón.
[C#]
|
[VB.NET]
|
Disculpa podrias volver colocar el codigo en VB, porque no se puede descargar del skydrive
ResponderEliminarGracias
Hola Edalo
ResponderEliminarya esta disponible el codigo para que lo descargues
saludos
Hola Leandro, podras Resubir el Ejemplo, por favor? de Antemano muchas Gracias !!!
EliminarHola Leandro,
ResponderEliminarPor favor me podrias decir si en el script puedo mandarle variables de code behind (en mi caso una clase en vb), tengo un ex.Message que necesito mandar en ese mensaje de alerta.
Gracias.
hola John
ResponderEliminarLa tecnica es la misma, solo que armaras el script dentro del bloque catch donde se produce el error.
Podria ser algo como esto:
Protected Sub btnProcesar_Click(ByVal sender As Object, ByVal e As EventArgs)
Try
'aqui el codigo del evento
Catch ex As Exception
Dim script As String = String.Format("alert('{0}');", ex.Message)
ScriptManager.RegisterStartupScript(Me, GetType(Page), "alertaerror", script, True)
End Try
End Sub
saludos
Perdon leandro creo que estoy confundido. Donde pones gettype(Page). Que es Page? y El
ResponderEliminarScriptManager no me funciona.
Yo lo tenia de esta manera pero no supe como incluir el Ex.Message.
(script language='javascript' type='text/javascript'> alert('Informacion Incorrecta!.');</script)
Lo puse entre () por que no me tomaba el comentario
hola John
ResponderEliminarPage es la propia pagina en la cual vas a escribir el script que creas
En asp.net cuadno escribes codigo en el codebehind, tienes a disposicion este objeto directamente
Es mas creo que si usas this, o Me en lugar de Page tambien funcion, porque representa a la pagina en donde estas registrando el script
saludos
Hola!
ResponderEliminarMuy buena la información, se agradece.
Con respecto a esto tengo una consulta. Mi confirm no siempre es gatillado después de presionar un botón. El que llame al confirm de javascript o no depende, por ejemplo de una variable. Mi código sería algo así:
Protected Sub BtnGrabar_Click(ByVal sender As Object, ByVal e As System.EventArgs)
if session("variable")="1" then
' Aquí llamar al confirmm, ¿pero cómo?
end if
End Sub
Si alguien tiene una idea/sugerencia de cómo hacerlo la agradecería enormemente
hola renezito
ResponderEliminarDisculpa la tardanza de la respuesta
Te comento, si entendi bien la pregunta podrias hacer algo como esto:
Protected Sub BtnGrabar_Click(ByVal sender As Object, ByVal e As System.EventArgs)
if session("variable")="1" then
Dim script As String = "alert('la variable tiene valor 1');"
ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, true)
end if
End Sub
Como veras el mensajes estara condicionado al valor de la Session, y solo se mostara al usuario si este tiene el valor 1
saludos
Hola Leandro,
ResponderEliminarHe visto en distintos códigos con funciones JavaScript que se llaman con o sin(como en tu 1er codigo) "javascript:" delante, ¿es lo mismo llamar a la funcion con o sin especificar "javascript:" delante? Si no lo es, ¿cuando especificarlo(alerta()) o no(javascript:alert('agregar!!!'))?
En el 1er codigo utilizas el parametro text="css/javascript" en lugar de language="javascript"¿Hay alguna diferencia entre ambos o son totalmente equivalentes?
Gracias, Leandro:D
hola fede
ResponderEliminarTe comento que en realidad creo que es indistinto que pones el "javascript:" o no dentro del evento del control
Pero se que se aplican ciertas reglas y en algunos casos.
Si solo vas a llamar a una funcion simple que ejecutara una accion sin devolver un resultado que deba afectar al control que realizo la accion, puedes usar onclick="NombreFuncion()"
y esto se ejecuta sin problemas.
Ahora bien si necesitas que esta funcion de javascript devuelva un valor que afecte al control y evite determinada accion, como ser el postback (o submit), entonces si requieres que se declare completa la operacion definiendo el "return", como veras en los ejemplos.
Pero no vi que sea obligatorio usar el "javascript:", si lo es el uso del "return" si es que quieres detener la accion del boton, segun el resultado de la funcion
Aqui se realzia la misma consulta
link
saludos
Gracias por la aclaración Leandro:D
ResponderEliminarEn cuanto a las formas de "declarar" el script (text="css/javascript" o language="javascript"), ¿cual me aconsejas?¿Son totalmente equivalentes o hay una mejor que otra?
Gracias de nuevo, saludos:D
hola fede
ResponderEliminarEn realidad te consejaria algo al estilo:
<script type="text/javascript">
Pues veras que el VS solicita en su validacion que el
"type" este definido, que el "language" u otra propiedad este o no, no lo afecta, pero el "type" si.
Por eso como minimo define esa propiedad
saludos
hola de nuevo leandro,
ResponderEliminar"Pues veras que el VS solicita en su validacion...",¿A que te refieres con el VS?
veras, se que no es el tema de este post, pero ¿?como puedo validar que se haya activado 1 radiobutton de los 2 que tengo?
seria algo asi?:
< script language="javascript" >
function verify(form) {
if((form.A.1.unchecked)&&(form.A.2.unchecked))
alert('Antes debe seleccionar una opcion'); }
}
Gracias. saludos :D
hola fede
ResponderEliminarDisculpa la tardanza en la respuesta
Por VS me refiereo al Visual Studio.
por ahi probaria algo mas como esto
<script language="javascript" >
function verify()
{
var radio1 = document.getElementById("<%=radioburron1.ClientId%>");
var radio2 = document.getElementById("<%=radioburron2.ClientId%>");
if((radio1.unchecked)&&(radio2.unchecked))
alert('Antes debe seleccionar una opcion');
}
</script>
saludos
Hola Leando, gracias por el aporte, muy bien explicado.
ResponderEliminarSolo una cosa, cuando pongo tu código me aparece este error.
Error 1 Se esperaba un identificador; 'return' es una palabra clave
Error 2 Se esperaba;
Error 3 El término de la expresión ')'no es valido
Perdona pero soy nuevo en esto!
hola Lenin
ResponderEliminarQue raro, descague el codigo en c# localmente y lo compile sin problemas, tambien ejecuto sin marcar error
has realizado alguna modificacion al codigo original ?
saludos
Hola Leandro, Quería consultarte como hacer una llamada a una función confirm del javascript pero desde un commandfield de una gridview.
ResponderEliminarhola Patricia
ResponderEliminarVeo complicado que desde un CommandField realices esto que necesitas.
Quizas debas crear un ItemTemplate en donde uses un boton comun asignandole al mismo un CommandName para que lance el evento RowCommand y asi puedas trabajar la accion.
Lo que permitira esto es que en el boton uses el OnClientClick que menciono en el articulo, pudiendo detener el evento si es que ese javascript devielve un false.
O sea aplicar algo como esto
GridView – Parte 1 - Javascript botón de eliminar con confirmación
saludos
Gracias Leandro, me has salvado una practica, te felicito por el articulo, muy bien redactado, explicado, el codigo sencillo y conciso, añado tu blog en las direcciones de interes de mi navegador.
ResponderEliminarhola leonardo te hago una consulta ya que estoy en aprietos queriendo presentar del lado del cliente "mensajes" provocados del lado del servidor.
ResponderEliminarSi desde una clase que tengo en la carpeta App_Code (que no hereda de una página) de mi proyecto, necesito mostrar un ex.message de mi bloque try-catch. Cual sería el primer parámetro "Type" que debería usar en el método ClientScript.Registerstartupscript.
La última, como hago si dentro del procedimiento 'sub', que tengo para el evento click de un boton "eliminar" en una página que está en una MasterPage. Quiero mandar un mensaje de confirmacion (¿desea eliminar si/no?), y en función de la acción del cliente, seguir del lado del servidor, con la acción de eliminar o salir. Como me conviene implementarlo?
Soy muy novato en el tema y vengo luchando hace unas semanas sin poder avanzar, desde ya muchas gracias, y me pareció excelente los ejemplos, saludo Marcelo.
hola Marcelo
ResponderEliminar1-
es que desde la clase que esta en el App_Code no deberias usar el
ClientScript.Registerstartupscript
este es claramente de presentacion y es en el codigo de la pagian dodne deberias armar el script y enviar el mensaje
desde la clase podrias enviar el Exception hacia arriba o sea dejarlo continuar y que sea atrapado por el evento de la pagina para mostrar el mensaje, pero claramente esto deberia estar en la presentacion no en funcionalidad por fuera, es por eso que encuantras poco natural el uso de este metodo porque lo estas ubicando en un lugar que no corresponde
a lo sumo el codigo del App_Code podrias cambiar el mensaje de error quizas usando alguna exception custom que podrias crear, pero deberia devolver el error para que el evento genere el mensaje suando el Registerstartupscript
2-
mmm este punto no es muy simple de lograr no al menos de la forma en como lo has planteado
lo que deberias lograr es pedir la confirmacion antes de ejecutar evento alguno contra el servidor, o sea detener el evento si es que cancela
si tienes algun boton
<asp:Button id='eliminar' OnclientClick='return Confirmar();' ... />
como veras ese confirmar es una funcion javascript que eviaria el postback si se rechaza el mensaje
esto esta implementado en el articulo
lo dificil es que se haga el postback, se vuelva a pedir una conformacion y se continue, eso no se podria haceral menos con los medio tradicionales, quizas con jquery y algun truco se podria acercar bastante pro es algo mas complejo
saludos
muchas gracias Leandro por tu celeridad, voy a seguir tus consejos para el punto 1. Que desde la pagina donde utilizo alguna función de la clase App_Code poder obtener las excepciones que se generen en ésta última, para así, sí poder mostrarlas desde la página. Y para el punto2 investigar de hacer algo como bien indicas con jquery y AJAX. Nuevamente muchas gracias por tu ayuda. saludos.
ResponderEliminarHola Leandro Yo denuevo, mira tengo el siguiente problema.
ResponderEliminarcree un proyecto ServerControl para crear validadores personalizados, por ejemplo un para el Rut.
dentro de este un script que permite realizar esta validacion en el cliente, todo funciona perfecto, hasta que este control fue incluido dentro de un UpdatePanel, funciona solo la primera ves y luego de actualizar el update panel deja de funcionar en el cliente y solo funciona en el servidor.
entiendo que indicas que se debe usuar ScriptManager.RegisterStartupScript, pero este proyecto no me permite usar este control que puedo hacer???
asi esta implementado:
protected override void OnPreRender(EventArgs e)
{
if (this.DetermineRenderUplevel())
CreateJavaScript();
base.OnPreRender(e);
}
....
protected void CreateJavaScript()
{
if (!Page.ClientScript.IsStartupScriptRegistered("ValidationRutScript"))
{
string script = @"
function RutValidator(ctrl)
{
...
}";
Page.ClientScript.RegisterStartupScript(GetType(), "ValidationRutScript", script, true);
hola Freddy
ResponderEliminarEs que si trabajas con el UpdatePanel, estas obligado a usar el ScriptManager
con el ClientScript no te va a funcionar.
lo que podrias hacer es poner el ScriptManager en la pagina y en el control un ScriptManagerProxy
[How Do I:] Use an ASP.NET AJAX ScriptManagerProxy?
saludos
Hola Leandro, no comprendo como implementar el ScriptManagerProxy en un server control, yo creo que tendre que desachar la vonita idea de crear mis validadores personalizados y debere usar un CustomValidator
ResponderEliminarhola Freddy
ResponderEliminarno entendi, como se relaciona el ScriptManagerProxy con las validaciones y el CustomValidator ?
imagino usas un UpdatePanel, pero estas creando UserControl, con validaciones
Walkthrough: Using Validation Controls Inside an UpdatePanel Control
saludos
Buenas tardes Leandro, te molesto por lo siguiente. Necesito hacer algo como lo que le planteaste a John:
ResponderEliminarDim script As String = String.Format("alert('{0}');", ex.Message)
ScriptManager.RegisterStartupScript(Me, GetType(Page), "alertaerror", script, True)
Pero con un mensaje de confirm que tengo en la base de datos. Basicamente mi aplicacion es multilenguaje y el mensaje viene desde la base, con lo cual yo necesito validar con el usuario cada acción de ABM con un mensaje de estos. Lamentablemente no estoy tan familiarizado con JavaScript que por lo que veo, permite hacer muchisimas cosas que de manera contraria no se podrian. Saludos y disculpa la molestia
hola Tincho
ResponderEliminarSe me ocurre rapidamente que podrias armar el string del javascript de forma dinamica en el codigo .net del servidor, para luego por medio del
ScriptManager.RegisterStartupScript()
publicar el script con los mensajes en el idioma que recuperaste desde la db
por supuesto harias esto en el evento Load de la pagina web, y no debe estar dentro del if(!IsPostBack)
porque necesotas que este javascript se genere en la accion de cada evento
enn el articulo veras ejemplos de como usar el RegisterStartupScript:
[ASP.NET] - JavaScript alert() y confirm()
saludos
ola Buenas noches por varias paginas como llamar a una funcion de javascript desde c# pero no consigo hacerlo tu das una solucion pero me dice que eso del Page.RegisterStartupScrip es absoleto si me pudieras asesorar te lo agradeceria att alberto
ResponderEliminarhola Sica
ResponderEliminares que deberias usar el
ScriptManager.RegisterStartupScript()
es el "ScriptManager", no el "Page"
por eso marca obsoleto
saludos
hola mira tengo un problema espoero me puedas ayudar, loq ue pasa es que quiero hacer una llamda a una funcion de javasrcipt al hacer clic en un boton, lo hice de esta forma y todo funciona Master.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('hola mundo');", true); el problema es que como utilizo un update panel si hago click en el boton que esta dentro del updatepanel no me manda a llamar a mi funcion y si lo hago de un boton fuera funciona perfecto espero y me haya explicado
ResponderEliminarhola Sica
ResponderEliminares que con el UpdatePanel el Page.ClientScript no funciona
debes usar el ScriptManager, como lo hago en el articulo
saludos
Hola, primero buen aporte, y tengo una pregunta si quiero almacenar el resultado que obtuvo un confirm() en vb como lo podría hacer en este momento lo obtengo asi: Response.Write(-script-javascript:if(confirm('¿Esta solicitud dispone de adjuntos, desea descargarlos?'));-/script-) pero como evaluo el resultado??
ResponderEliminarGracias y Saludos
hola Nelson
ResponderEliminarel tema es que estas en dos lugares muy distintos el confirm aplica en el cliente y vb.net aplcia en el servidor
podrias si te animas con jquery a realziar una invocacion usando $.ajax para poder invocar al server sin postback
seria algo como esto
[ASP.NET][jQuery] Validación sin Postback
si validas los temas de jquery del blog hay otros articulos que tratan el tema, pero basicamente de esa forma podrias pasar al server la confrmacion desde el cliente
saludos
Hola leandro,
ResponderEliminarEstoy aplicando tu ejemplo en c#, pero tengo el sig.error 'Input string was not in a correct format.' me lo marca en la parte de script = string.Format (script, ex.Message); no acepta el formato. Estoy utilizando VS2010 en web.
gracias
hola Viridiana
ResponderEliminarmmm no sabria decirte sin el contexto de esa linea
quizas puede ser que el script defina un string que aplica un formato incorrecto
saludos
Hola Leandro!.
ResponderEliminarTengo un Formulario web de registro y quiero agregarle un mensaje de confirmación, pero quiero que este se ejecute después de que halla validado los campos, ya que este todo lleno correctamente me diga que los datos son correctos y que me pregunte si deseo o no continuar.
escribí el mensaje en el evento onclientclick pero este me ejecuta el evento antes de validar los campos, como lo controlo.
Me Podrias ayudar.
Saludos.
hola Chipujin
ResponderEliminarpero entonces no has revidado los ejemplos de este articulo, porque veras que si quieres desde codigo .net se genere un script el cual se ejecuta en el cliente debes usar:
ScriptManager.RegisterStartupScript()
saludos
Hola Leandro. Tengo una duda. Yo tengo en mi proyecto de asp.net un archivo .js donde voy escribiendo mis funciones de javascript. A estas funciones las puedo convocar agregandolas como atributos de algun componente. cosa.attributes.add
ResponderEliminarLo que no logro hacer, es que cuando se está cargando mi pagina se convoque a una de estas funciones del .js
No quiero usar el RegisterStartupScript, porque tendria que volver a escribir mi script. Yo solo quiero convocar en el load una funcion de mi archivo .js
Desde ya agradezco tu ayuda.
hola Ignacio
ResponderEliminarno se si entendi el planteo del problema
pero si estas usando jquery podrias usar el
$(function(){
nombrefuncion();
});
ese bloque se ejecuta cuando se carga la pagina, alli reemplaza el nombre de la funcion que quieres ejecutar
esto lo pones dentro del bloque <script>
y solo es valido si usas jquery
saludos
Leandro: Gracias por responder. Ehm... no, creo que me explique mal. No uso jquery. Solo tengo un archivo de javasscript que agregue en el proyecto de asp.net. Lo agregue en blanco y alli voy escribiendo mis funciones script.
ResponderEliminarEl tema es que, hasta ahora siempre las convocaba agregando como atributo a algun componente como por ejemplo:
Me.LinkButton3.Attributes.Add("onclick", "javascript:return Ubicar('" + Me.PanRegistro.ClientID + "');")
y ahi convoco a la funcion Ubicar() de mi archivo.js
Yo lo que queria saber, es si habia alguna manera de convocarla sin que se la agregue como un atributo a algo. Porque necesito que se ejecute en el load.
Espero que esta vez me haya explicado bien. (a veces me cuesta jajaja).
O sea, haciendo:
ResponderEliminarDim Script As New System.Text.StringBuilder
Script.Append("<4script>document.getElementById('" + Me.PanRegistro.ClientID + "').style.visibility='hidden';" & vbCrLf)
Script.Append("" & vbCrLf)
Page.RegisterStartupScript("ClientScript", Script.ToString)
en el load de mi pagina me funciona a la perfeccion. Pero yo ya tengo escrita esa funcion en mi archivo.js. Simplemente quiero convocarla.
hola Ignacio
ResponderEliminarpodrias usar el OnClientClick para definir el evento del link sin un atributo
no lo he probado pero podria ser
<asp:LinkButton ... OnClientClick="return Ubicar('" + Me.PanRegistro.ClientID + "');">
ojo no lo he probado
saludos
Saludos Leandro:
ResponderEliminarTengo el Siguiente escenario,supongamos que tengo una lista de opciones en un radioList,entonces quiero mostrarle un mensaje antes de grabar cuando el cliente seleccione una determinada opcion,"Desea Establecer el Estado Ejecutado al Evento?", si la respuesta es "Si" que grabe el registro.
hola Posvaldo
ResponderEliminarpodrias suar algo como ser
<asp:Button runat="server" onclick="button1_click" OnClientClick="return confirm('Desea Establecer el Estado Ejecutado al Evento?');">
como veras el confirn sera quien pida la validacion y el onclientclick solo hara postback al evento para grabar si es que se confirmo sino se anula el evento al server
saludos
Hola Leandro:
ResponderEliminarNo entiendo los parametros de esta funcion, si me lo podría explicar
ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false) ;
Muchas Gracias!
hola Dario
ResponderEliminarScriptManager.RegisterStartupScript
en el link podras ver los parametros que este metodo define
saludos
Leandro, gracias por tu tiempo y dedicación.
ResponderEliminarEstoy empezando con ASP.Net y C#, y debo escribir código para un mensaje de alerta. Hice paso por paso la propuesta 8, pero al ejecutar no aparece el mensaje de alerta. Pot ahí, en otra página, leí que decías que había que poner ScriptManager en la página en la que se produce el error puesto que de otro modo no funcionaba; esto no lo sé hacer... Simplemente agregué el código y de tu artículo. Te reitero mi agradecimiento porque sin haberte preguntado nunca, me has ayudado mucho.
hola Marcelo
ResponderEliminarel ScriptManager en principio deberia ser una clase que usas de forma directa, en el codigo solo pones el nombre de esta clase y deberias poder usarla
esta proporciona metodos para registrar codigo javascript que es compatible con el uso del updatePanel, por eso es tan importante
basicamente defiens un string con el javascript que quieres registrar y luego usas el metodo que explico en el articulo
saludos
Hola Leandro gracias por tus aportes son buenisimos. tengo este problemita con el evento onclientclick lo que sucede es q no me esta eliminando te paso el codigo
ResponderEliminarprotected void gvProveeddores_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
int indicefila;
indicefila = Convert.ToInt16(e.CommandArgument);// indice de la fila seleccionada
if (e.CommandName == "Editar")
{
//Guardamos en una variable de sesion el codigo del vendedor seleccionado
Session["Cod_Ven"] = gvProveedores.Rows[indicefila].Cells[2].Text;
Response.Redirect("ProveedorMan03.aspx");
}
else if (e.CommandName == "Eliminar")
{
if (_ProveedorBL.EliminarProveedor(gvProveedores.Rows[indicefila].Cells[2].Text))
{
gvProveedores.DataSource = _ProveedorBL.ListarProveedor();
gvProveedores.DataBind();
}
else
{
lblMensaje.Text = "El vendedor no se pudo eliminar porque esta vinculado a otras tablas";
}
}
}
catch (Exception ex)
{
lblMensaje.Text = "Se produjo el error..." + ex.Message;
}
}
el MENSAJE QUE ME SALE ES EL DEL CATCH ES DECIR NO HACE EFECTO , NO ELIMINA, AGRADEZCO TU AYUDA
PDTA: tengo tu demo de mensajes de confirmacion pero ahi no eliminas por eso te pido ayuda,gracias una vez mas
hola Aldo
ResponderEliminarno veo que relacion tiene el onclientclick con el rowcommand
pero veo que comentas que la ejecucion pasa por el catch lo cual me lleva a preguntar que mensaje de error recibes ? que mensaje devuelve el exception
saludos
Hola leandro, estoy tratando de hacer una redireccion en el confirm pero no me funciona, me podrias decir que estoy haciendo mal?
ResponderEliminarfunction Confirmacion() {
var seleccion = confirm("acepta el mensaje ?");
if (seleccion) {
location.href = 'delete.aspx?id=9&pagina=Presentacion';
} else {
alert("NO se acepto el mensaje");
return seleccion;
}
}
boton:
Hola Leandro Tuttini como le podria aser para crear mi codigo java scrip y mandarlo a llamar en un form visual para que apareca el mensaje despues de cierta accion
ResponderEliminarHola Leandro Tuttini como le puedo aser para crear un codigo javascrip que lo pueda mandar a llamar a un formilario VB para que aparesca despues de cierta accion como un tipo msgbox???
ResponderEliminarhola Andres
ResponderEliminarno probaste con
window.location.href = 'delete.aspx?id=9&pagina=Presentacion';
ademas si pones un alert() esa guncion se ejecuta?
saludos
hola PAredes
ResponderEliminardeberias usar el ScriptManager para generar codigo javascript algo como ser
public void MostrarMensaje(string msg){
string script= "alert('mensaje');";
ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, true);
}
saludos
Hola Leandro ya solucione el problema anterior, ahora lo que no puedo es pasarle un parametro a la funcion, siempre me da error que esta mal formado, esta es la linea que tengo en mi repeater.
ResponderEliminargracias de nuevo
esa es la linea
ResponderEliminarOnClientClick='return Confirmacion("<%#Eval("IdPresentacion")%>")'
Hola Leandro este es mi codigo:
ResponderEliminarfuncion javascript
function Confirmacion(id) {
var seleccion = confirm("¿Estas seguro de querer borrar el registro?");
if (seleccion) {
location.href = 'delete.aspx?id=' + id + '&pagina=Conocimiento';
//usado para que no haga postback el boton de asp.net cuando
//se acepte el confirm
return false;
}
}
button:
OnClientClick='<%# Eval("IdConocimiento", "return Confirmacion({0})") %>'
me parece que esta igual al que pusiste vos,en mi servidor local me funciona bien, pero cuando lo subo me tira el siguiente error:
No se puede mostrar un cuadro de diálogo o formulario modal cuando la aplicación no está en modo UserInteractive. Especifique el estilo ServiceNotification o DefaultDesktopOnly para mostrar una notificación de una aplicación de servicio.
no se porque, en teoria con javascript tendria que funcionar, no se que estoy haciendo mal.
Saludos y gracias
hola
ResponderEliminarsi despues de desplegarse la pagina en el browser, ves el codigo html del mismo, puede ver que la invocacion a la funcion de confiracion se define de forma correcta?
OnClientClick="return Confirmacion('<%#Eval("IdPresentacion")%>')"
el valor del parametro deberia estar con comillas simples
saludos
Hola Leandro, el problema es que cuando veo el html despues que carga el browser, veo esto onclick="return Confirmacion(8);" como vos decis le falan las comillas al parametro, pero la unica forma que lo pude pasar es asi, de cualquier otra forma me dice que esta mal formado
ResponderEliminarOnClientClick='<%# Eval("IdCliente", "return Confirmacion({0})") %>'
y aca no se donde ponerle las comillas simples porque siempre me dice que esta mal formado si las pongo.
donde las pongo? o si sabes alguna otra forma de pasarlo, porque ya me quede sin ideas..
Muchas Gracias
hola Andres
ResponderEliminarsi se complica armarlo en el html, porque no lo haces en codigo .net, podrias definir el evento RowDataBound del gridview y alli definirlo
private void GridView1_RowDataBound(...)
{
DataRow row = ((DataRowView)e.Row.DataItem).Row;
Button btn = e.Row.FindControl("button1") as Button;
btn.OnClientClick = string.Format("return Confirmacion('{0}');", row.Field("IdCliente"));
}
saludos
Hola Leandro, te cuento que probe hacerlo como me decis, y entre otras formas que probe esta la siguiente.
ResponderEliminarhref="if (confirm('Continue?')) { window.location.href='delete.aspx?id=<%#Eval("IdCliente")%>&pagina=Cl' } else { void('') }; ">
en todas me pasa lo mismo, todo funciona bien, me aparece el alert y me redirecciona si hago click en aceptar, pero cuando entra en la pagina delete, no me ejecuta mi codigo que tengo en el load, el codigo del delete te lo pongo aqui abajo:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim id As Integer = CType(Request.QueryString("id"), Integer)
Dim pagina As String = Request.QueryString("pagina")
Select Case (pagina)
Case "Cl"
aca elimino el cliente
End Select
Catch ex As Exception
PageHelper.MsgBox(ex.Message)
End Try
End Sub
realmente no se que puede ser, cuando trabajo de forma local funciona bien, el probelma es cuando lo pongo en mi servidor online.
Muchas gracias
hola
ResponderEliminarestas seguro que al ponerlo en el servidor no se genera ningun error ?
prueba quitar el try..catch dejalo sin nada y ejecuta en el servidor a ver si recibes una pagina de error
saludos
Hola
ResponderEliminarPerdona que haya borrado el anterior post, pero ya encontré la solución.
Otro problemilla: Tu codigo va perfecto, me pregunta si acepto o no. Si acepto ejecuta el codigo VB y si cancelo sigue en el formulario. Perfecto. Pero, una vez pulsado el aceptar y realizado el codigo VB ¿Podria volver a salir una ventanita que diga por ejemplo, "grabacion realizada correctamente" con un boton aceptar y crear así una salida más elegante?
Gracias
hola Jaume
ResponderEliminarpodrias volver a generar un alert desde codigo vb.net para que registre el alert() que tiene que mostrar
o sea una vez que hayas completado la operacion en .net registra el alerta con ese mensaje que informe que todo se completo correctamente usando el ScriptManager.RegisterStartupScript()
saludos
Gracias Leandro.
ResponderEliminarEn tu ejemplo llamas al mensaje con "alert" y ello hace que salga un triangulito de alerta en la ventana. He buscado por internet para ver otras opciones y no encuentro nada. ¿Hay alguna otra llamada para que no salga el triangulito de alerta y salga otro mas conforme con el mensaje "Grabación realizada correctamente?
Saludos
hola Jaume
ResponderEliminarel mensaje estandar de javascript es el alert y no se puede cambiar
si necesitas algo diferente quizas debas usar jquery
podrias usar jquery UI dialog
para definir un cuadro de mensaje
esto lo defines fijo en .js y luego lanzas al funcion que muestre ese dialogo con el contenido personalizado
saludis
Leandro:
ResponderEliminarMuy buen ejemplo de uso de javascript, quería complementar tu respuesta a Jaume, que existe otro plugin de jquery que se llama jquery Alert Dialogs el que me ha sido bien útil para dejar mensajes de alerta más vistosos. Dejo una página para que puedan ver ejemplos para reemplazar lo siguiente:
javascript | jquery Alerts
alert -> jAlert
prompt -> jPrompt
confirm -> jConfirm
http://www.actualidadjquery.es/2010/11/01/jalert-substituto-del-alert-prompt-y-confirm-en-jquery/
Muchas gracias a los dos. Por lo que veo tendré que empezar a mirar la libreria jquery, parece que puede sacar de muchos apuros.
ResponderEliminarGracias.
Hola Leandro
ResponderEliminarprimero que todo gracias por tu explicación me sirvió de mucho, pero tengo una duda y es que quiero mostrar un mensaje del error de una excepción que esta en otra clase, como hago para que se muestre en la pagina que quiero.
Harold
hola Harold
ResponderEliminarpodrias realizar un control global de errores
Processing Unhandled Exceptions
para asi redireccionar a la pagina que procese el error
tambien podrias ver de usar el tag <customerrors> del web.config
saludos
Hola!
ResponderEliminarQuiero llenar un gridview por medio de un botón, haber si lo puedo explicar, a la hora de darle clic al botón me aparezca el directorio para que el usuario seleccione la tabla que que quiera (la tabla en access) y cuando le de abrir automaticamente llene el gridview, en asp.net
Hola!
ResponderEliminarPor favor me podrías auxiliar, como puedo llenar un gridview por medio de un botón, haber si me explico, cuando el usuario le de clic al botón (seleccione tabla) aparezca un directorio y que seleccione la tabla que quiera (la tabla debe de ser access),cuando el usuario allá seleccionado la tabla le de clic a abrir y en ese momento se llene el gridview
por favor
gracias
hola
ResponderEliminarbueno no es algo facil de explciar porque requiere muchos pasos
- el primer punto sera mostrar un popup de seleccion, esto puede ahcerlo con jquery o modal popup extender
[ASP.NET] PopUp Filtro – Usando jquery UI Dialog
- despues mencionas listar las tablas de access, para esto deberias acceder al schema de la db
http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/9205feef-4713-4f75-b2ae-24f2f599e997/
- despues ya queda solo seleccion el nombre y armar la query que cargaria el grid, pero eso es solo ado.net simple en donde pondrias el nombre de la tabla concatenendo el string para armar la query
saludos
Hola!
ResponderEliminarYa estuve revisando lo del popup y jquery pero aun no me queda muy claro, ya vi el link pero aun no le entiendo muy bien, este proceso lo tengo en C# pero lo quiero cambiar a ASP.NET
Saludos
hola Irmuchis
ResponderEliminarno entendi muy bien, que proceso es el que tienes en c# ? la seleccion de algo al usuario requiere de una interaccion
quizas si el planteo requiere publicar codigo o imagenes seria mejor si se plantea en el foro
asp.net foro
alli se puede publicar mejor el codigo
saludos
Hola Leandro!!
ResponderEliminarEste es el código en C# que quiero pasar a ASP.NET
private void button1_Click(object sender, EventArgs e)
{
//Stream sa = null;
OpenFileDialog arch = new OpenFileDialog();
arch.InitialDirectory = "c:\\";
arch.Filter = "accdb files (*.accdb)|*.accdb|all files(*.*)|*.*";
arch.FilterIndex = 2;
arch.Title = "BUSCAR TABLA";
arch.RestoreDirectory = true;
if (arch.ShowDialog() == DialogResult.OK)
{
OleDbDataAdapter old = new OleDbDataAdapter("Select * from tabla", con);
DataSet ds = new DataSet();
old.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
}
en C# todo se hace en código .cs y en asp.net por lo que eh visto es por medio de código en diseño, es decir por medio de script
hola Irmuchis
ResponderEliminarese codigo no se puede traducir a asp.net porque no existe ningun equivamente para el OpenFileDialog
lo mas parecido es usar un control FileUpload en la pagina asp.net, pero esto no funcionara de la misma forma en que lo planteas en ese codigo, porque deberias subir una db al servidor para poder usarla
no creo que esto que intentas hacer este correcto
saludos
Hola Leandro!!
ResponderEliminarSi tienes razón,ya que estuve probando con el fileupload y nomas nada, anteriormente mencionabas lo del popup o jquery, esto me serviría o definitivamente no hay opciones para poder hacerlo.
Saludos y gracias
De nuevo yo
ResponderEliminarO en su defecto habrá una forma de que se seleccione la tabla y se llene automáticamente el gridview.
ayuda porfis
gracias
hola Irmuchis
ResponderEliminarsi tienes una base de datos, podrias obtener el schema de esta y recuperar los nombres de las tablas para listarlos en un combo donde el usuario seleccione
http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/cf7690cd-2b6f-46c9-a903-7b9959fa8be5/
en el link menciono este tema, para cualquier db es igual ya que usas ado.net
saludos
ResponderEliminarGracias Leandro, estoy revisando el link.
Saludos
Hola, podias hacerme el favor de como implementar el mensaje de confirmacion 2 veces (doble), osea, Sale primer mensaje al decir q si, q salga otro preguntando si esta segurisimo, y si le da si se aplica lo que esta en el evento Button1_Click... espero pronta respuesta, es en ASP.NET C#
ResponderEliminarhola Juanchope
ResponderEliminarrecuerda que para deteenr o no el evento del boton basta con devolver true/false como resultado de la funcion javascript
por eso podrias tomar la respuesta de un confirm para evluarlo nuevamente
var respuesta1 = confirm('desea eliminar?');
if(respuesta1){
var respuesta2 = confirm('esta seguro?');
return respuesta2;
}
return false;
saludos
Gracias leandro me distes la idea perfecta, ya acomode para q se validara asta lo ultimo, pal que le sirva quedo asi:
ResponderEliminar//DOBLE MENSAJE DE CONFIRMACION EN ASP.NET
var respuesta1 = confirm('desea eliminar?');
if(respuesta1){
var respuesta2 = confirm('esta seguro?');
if(respuesta2){
return true;
}
}
return false;
eso en el diseñador de su pagina, en el code Load llaman a la Funcion :D y al crear al boton le activan el OnClick :D
Hola Leandro
ResponderEliminarprodrias ayudarme en como mostrar el RAISERROR de mi procedimiento almacenado en mi asp.net c#
en el catch.
Gracias
hola Gabriel
ResponderEliminarpero deberia ser directo si usas
catch(Exception ex){
MessageBox.Show(ex.Message);
}
eso deberia mostrar la descripcion del error que retorne el procedure
saludos
Hola me podrias decir como puedo mostrar un alert despues de clicar un boton y que la informacion haya sido guardada en la BD? Despues de dar Aceptar al Alert redirigirse a otra pagina?
ResponderEliminarEl flujo es Clicar en Boton Aceptar la informacion se guarda en la BD y aparece el alert con el mensaje, Usted acepto el contrato y sera redirigido a la siguiente pagina.
Al dar clic en aceptar del alert se rediriga a "x" pagina.
hola
ResponderEliminarveo bastante dificil los pasos que planteas realizar, recuerda que esto no es un desarrollo winform, no puedes ir y venir con los mensajes como guste porque requieres un ida y vuelta al servidor
podrias lanzar desde el servidor un mensaje como lo planteo en el articulo, pero despues para redireccionar a otro pagina deberias seguir con codigo cliente, usando el
window.location.href="url";
asi al aceptar el dialogo redireccionas a otra pagina
saludos
hola leandro, sabes si existe alguna forma de enviar un confirm al abandonar una forma web aspx, ya sea cerrando el navegador o cambiando de forma (cambiar de forma depende de un menú de formas que es parte del master page), solo quiero mostrar este confirm en un forma, intente sobrescribir el evento OnUnload y dentro de este poner código javascript pero no me funciona alguna idea de como lograrlo?
ResponderEliminarhola david
ResponderEliminarpodrias detectar esto que planteas desde javascript usando
window.onbeforeunload
Llamar funcion solo cuando oprima el boton cerrar
saludos
Buen dia, una duda y si el alert lo quiero realizar dependiendo de una condicion y no al hacer click sobre el boton por ejemplo
ResponderEliminarif (CantidadAsiganda > CantidadAsignable)
{
Deplegar Mensaje
}
Muchas gracias de antemano
hola Willians
ResponderEliminarpero esta condicion en que accion la defines ? es en codigo cliente o en algun evento en codigo .net
porque si es codigo .net necesitas registrar la invocacion al evento javascript para que al volver el response al cliente se ejecute
saludos
Buen dia, le explico el caso tengo un gridview con los renglones de una recepcion, al editar una fila puedo asignar la cantidad a recibir del renglon pero esta no debe exceder la cantidad esperada. de alli lo de CantidadASignada>CantidadAsignable
ResponderEliminarpara complicar un poco mas las cosas esto esta dentro de un updatepanel:
el codigo detras es el siguiente:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int CantEntregada = int.Parse(e.NewValues[0].ToString());
int AsigMax = int.Parse(GridView1.Rows[e.RowIndex].Cells[6].Text);
int Entregado;
if (CantEntregada > AsigMax)
{
Entregado = AsigMax;
AQUI IRIA LA LLAMADA AL ALERT()
}
else
{
Entregado = CantEntregada;
}
.:Aqui va el codigo para guardar los cambios:.
}
Buen dia, Intente esto, quitando el updatepanel y tampoco consegui que me levante el mensaje:
ResponderEliminarClientScript.RegisterStartupScript(this.GetType(), "myScript", "< script >javascript: alert('La cantidad es superior a la asignable, \n se establecio el maximo de " + AsigMax.ToString() + " .');< /script >");
hola Willians
ResponderEliminary si utilizas el ScriptManager como lo realizo en este el articulo
con este podrias registrar una accion unque utilicen updatepanel
algo como ser:
string script = string.Format("alert('La cantidad es superior a la asignable, \n se establecio el maximo de {0}.');", AsigMax);
ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, true) ;
saludos
Leandro disculpa que te moleste, pero estoy en un dilema y quizas puedas arrijar una luz.
ResponderEliminarRealice un javascript alert con codigo.
Este codigo lo traigo de una base de datos y luego ejecuto el script. El tema es el siguiente cuando cargo ejemplo un comentario, este se carga en la BD pero no sale en el script, si agarro ese item de la bd y lo vuelvo a pegar con un UPDATE reemplazando eel anterioir (aclaro sin editar nada, solo copio y pego) el script me lo muestra, pense que podria ser un tema de espacios en blanco, asi que antes de cargqar a la BD el comentario le pongo un TRIM(COMENTARIO), pero tampoco funciona.
Ahora esto tampoco pasa siempre ya que en comentario cortos no tengo este inconveniente.
Espero tu respuesta y aprovecho para agradecerte por compartir todo lo que sabes con la comunidad.
SALUDOS
Cordial Saludo Leandro, quisiera saber como implementar una confirmación al cambiar la seleccion de un DropDownList en asp.net. Como quien dice, que pregunte si esta seguro que quiere hacer el cambio y que luego de preguntar, realice una operacion en codigo servidor. Muchas gracias!!!
ResponderEliminarhola Juan
ResponderEliminarno validaste si este texto tiene algun caracter especial que podria estar causando algun error en javascript
has probado aplicar un Encode al texto antes de ponerlo en el script ?
valida tambien sino se genera algun error en la pagina, podrias usar FireFox con el plugin de FireBug para detectar si se produce algun error y poder visualizarlo
saludos
hola Stivenson
ResponderEliminaresta confirmacion la necesitas realizar desde codigo cliente o desde servidor
si es desde servidor podrias poner el evento SelectedIndexChanged al combo y la propiedad AutoPostBack = true, para que funcione el evento
entonces desde codigo .net defines el mensaje como lo explico en el articulo
saludos
Leandro gracias por la ayuda, te comento que lo resolví el inconveniente.
ResponderEliminarDespués de realizar pruebas me di cuenta que en el textbox multiline al apretar la tecla enter, este guarda en SQL Server el carácter aunque no lo veía y ahí estaba el error. Lo que hice fue reemplazar en el código de visual basic cuando pedía este campo de la tabla y luego lo envía a JAVA para el alert
Muchas gracias por tu tiempo
Leandro, como puedo implementar un CONFIRM con javascript dentro de un botón en un GridView?
ResponderEliminarTengo un GridView que me muestra nombres de ficheros en disco y le implementé un botón con la acción de borrar el archivo a cada ROW ( )
Actualmente al dar clic en la imagen de la X se borra el archivo, pero quiero mostrar antes una ventana de confirmación, se me ocurria implementar con javscript el confirm. Pero cómo hacerlo?
En el comentario anterior me faltó colocar que para la imagen de la X utilizo cun asp:ButtonField
ResponderEliminarhola Sergio
ResponderEliminarpodrias implementar algo como esto
[GridView] Javascript botón de eliminar con confirmación
saludos
Hola Leandro,
ResponderEliminarMuy bueno tus blog, tengo una consulta.
tengo un GridView con una campo de Select y un textbox donde el usuario ingresa un numero dentro del textbos del gridview y el Select lo coloque como un boton y al presionarlo inserta el registro con el valor colocado en el txtbox en la base de datos.
Necesito que cuando el registro que se halla insertado envie un mensaje de confirmacion indicando que ya esta insertado y si acepta se vuelva a inserta de lo contrario no haga nada.
Ya tengo la validacion de cuando el registro esta repetido solo seria hacer que abra la ventana y tomar el retorno si acepta o no.
Espero me puedas ayudar con este dilema.
hola como envio una variable a una funcion javascript desde c#
ResponderEliminarejemplo
funcion alerta(mensaje){
alertify.alert( mensaje, function () {})
};
cuando precione un boton quiero enviar la variable para el mensaje
hola angel
ResponderEliminarpara enviar algo desde c# requieres que se de un postback al servidor, a la vuelta es que usarias el ScriptManmager.RegisterStartupScript()
para registrar el codigo cliente en javascript que pondria el valor desde el servidor y lo enviaria al cliente
por supuesto tambien existe la forma usando ajax, usando jquery y $.ajax para invocar un webmethod que seria quien envia la info del servidor al cliente
saludos
hola Eduardo
ResponderEliminaresto que planteas esta algo dificil de lograr ya que la confirmacion del confirm() de javascript que envies desde el servidor y muestre en el cliente requiere que se realice otro postback a un evento, para esto se podria usar el _doPostBack() entonces envias nuevamente la accion al evento en el servidor usando javascript
aunque tambien podrias usar jquery con una invocacion $.ajax() a un webmethod en el servidor, esto sin que se recargue la pagina ante una invocacion a un evento
saludos
buen dia:
ResponderEliminarNecesito ayuda para poder realizar una validación en c#, la cual no se como validar en caso de que el usuario cancele, y este realice otras cosas, ya que si hay mas código abajo las ejecuta sin mostrar el mensaje.
ScriptManager.RegisterStartupScript(this, typeof(Page), "capturaPendiente", scrip, false);
espero haber explicado de manera correcta.
Gracias,saludos
hola Chris
ResponderEliminarno se si entendi del todo el problema, pero recuerda que esto no es un desarrollo desktop, no se puede mostrar al usuario un mensaje que este confirme y continuar donde habias quedado, no es asi como funciona un entorno web
si quieres algo como eso vas a tener que realizar dos llamadas a eventos diferentes, por supuesto el segundo evento lo lanzarias de forma automatica con codigo javascript usando el _doPostBack()
http://social.msdn.microsoft.com/forums/es-ES/bb4c06b5-ad10-47aa-8499-f3d25960eba7/confirm-message
saludos
buen día Leandro:
ResponderEliminarAntes que nada gracias por tu respuesta.
Ya cheque el link, de hecho ya habia comenzado a probar con el _doPostBack, solo que parece no funcionarme, ya que cuando entra al evento load en la página dentro de la condición isPostBack el valor es falso :(.
Este el código que utilizo:
Captura = "NoPendiente";
$("#__EVENTARGUMENT").val(Captura);
__doPostBack('', Captura);
location.href = "PaginaX.aspx";
Gracias por tus aportaciones.
Hola otra vez;
ResponderEliminarPensando un poco más en el objetivo de esto, sería posible que antes de redireccionar la página pudiera asignar una variable a null, para que este realice otras cosas, ya que el postback no me funciona :~
hola Chris
ResponderEliminarcuando hace el doPostBack a que evento lo redireccionas ? porque veo que defines un argument pero no le indicas a que evento de que control
ademas no le veo sentido hace un doPostBack y el la linea siguiente el location.href, porque estas invocando un evento, no se puede redireccionar desde alli, podrias usar el Response.Redirect() cuando estes dentro del evento
desde javascript podrias asignar el valor de cualquier control, aunque no entendi lo de la variable, estas estan en el servidor o es una variable de javascript ?
recuerda que estas en el servidor o en el cliente y uno no puede acceder al otro sino hay una accion en medio
o como comente salvo que uses jquery con una invocacion ajax
saludos
Leandro como le agrego un CssClass al mensaje que se provoca en el cuadro del mensaje, lo digo para poder darle formato con Css.
ResponderEliminarGracias.
hola Franky
ResponderEliminara un mensaje alert() de javascript no se le puede dar estilo
si quieres estilos deberias usar un plugin de jquery, como ser
jquery alert
saludos
Hola Leandro
ResponderEliminarante todo muchas gracias por tu ayuda,
quisiera preguntarte cual de tus ejemplos utilizo para mandar un alerta en el lado cliente, por ejm si el usuario no selecciona un item de un combo o deja un campo vacio envie un alerta pero sin que vaya al servidor. gracias por tu rpta
hola Aldo
ResponderEliminarpodrias usar el RequestFieldValidator
con este control podrias validar la seleccion del combo
Dropdownlist validation in Asp.net Using Required field validator
si el combo tiene algun item por defecto podrias indicarlo
saludos
Hola, yo solo deseo recibir el aceptar o cancelar para saber si imprmo o no un repore, puse este codigo:
ResponderEliminarfunction Confirmacion() {
var seleccion = confirm("Desea Imprimir El Gasto?");
return seleccion;
}
Pero como lo podria recoger en el codigo para hacer alguna accion dependiendo de si presionaron aceptar o no
algo como esto que hago en windows form:
var result = MessageBox.Show("Desea Imprimir el Gasto?", "Impresion...", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
ImprimeGasto(NoGasto.Text);
}
hola Carlos
ResponderEliminaro sea quieres recibir la seleccion que se realizo en el cliente, en el codigo .net en el servidor ?
http://social.msdn.microsoft.com/Forums/es-ES/e945031e-d129-4ffd-bfa2-8e5c1483e7d7/tengo-un-botn-confirmcmo-capturo-la-accion-de-aceptar-o-cancelar?forum=netfxwebes
http://social.msdn.microsoft.com/Forums/es-ES/c3f3622c-b744-46ca-99dc-af5a7b8b1631/pasar-variables-desde-javascript-a-c?forum=vcses
como veras podrias asignar la seleccion a un control hidden de asp.net para asi al realizarse el postback al evento poder tomar la seleccion que realizo el usuario
saludos
hola Christian
ResponderEliminarusando solamente javascript me temo que no, pero si usas jquery podrias implementar este plugin
jquery Alert
jAlert,jConfirm,jPrompt VS alert y lo tradicional
saludos
Hola estoy viendo todas tus publicaciones y son excelentes.... necesito de tu ayuda...
ResponderEliminarel tema es que tengo una tabla clientes una tabla de cuotas y otra de estados
necesito sacar la fecha de vencimiento de la cuota y compararla con la fecha de pago y ver si esta vencida no se pago.. hacer que el estado del cliente se ponga en moroso
hola ivana
ResponderEliminarno conozco la estructura de las tablas
la fecha de pago donde la persistes?
queres solo obtener la fecha de la cuota del mes en curso, o las cuotas llevan una marca indicando si fueron pagadas?
saludos
Hola Leandro agradezco tu información.
ResponderEliminartengo una consulta utilizo uno de tus métodos para enviar el Script al archivo JS desde Mi Form de ASP.NET (C#)
string script2 = @"type='text/javascript'> Valida_Rut('" + TextBox1.Text + "')
ScriptManager.RegisterStartupScript(this, typeof(Page), "Valida_Rut", script2, false))
/*Borre las etiquetas scrip para que me tomara el comentario*/
La función JavaScrip es un poco larga como para escribirla, pero lo que hace es, si el rut(Chileno) es verdadero retorna un true y si es falso retorna un false, esos booleanos que retorna como yo puedo administrarlos en el form de asp.net (C#). ejemplo querer decirle si me retorna un false hacer un break hasta que envié un true en el booleano del javascrip
Te lo agradecería un montón amigo, no se si me explique bien.
hola Ruben
ResponderEliminaresta claro que el bool que se genera en el cliente no puedes accederlo en el servidor
quizas podrias asignar el valor a un hidden de asp.net y realizar un post a un evento para poder tomarlo
tambien podrias usar jquery con $.ajax para enviarlo el servidor por medio de un webmethod
saludos
Hola leandro, tengo una consulta. Al seleccionar un boton se da la opcion de guardar un informe tanto en xls como en pdf. Luego de salvar ese informe en lugar de mostarr una alerta con javascript le digo que cierre esa pantalla y cargue la pantalla anterior. ANtes de agregarle a la pantalla el control ScriptManager funcionaba correcto ahora ya no funciona, es decir luego de mostrar el informe no vuelve a la pantalla anterior con el siguiente codigo:
ResponderEliminarPage.ClientScript.RegisterStartupScript(this.GetType(), "myCloseScript", "if (window.opener != null){window.open('','_self','');window.opener.UpdatePendientes();window.close();} else {window.location.href='Pendientes.aspx';}", true);
hola eugerodriguez
ResponderEliminarel problema es que estas usando el Page.ClientScript cuando deberias estar usando el ScriptManager.RegisterStartupScript() como lo realizo en este articulo
el Page.ClientScript no funciona cuando usas controles de ajax
saludos
Leandro Me podrias ayudar te comento tengo la siguiente función
ResponderEliminarfunction msg() {
if (confirm('Deseas aceptar')) {
--aca mi condición
}
El problema que tengo es que quiero personalizar osea quisiera algo así:
function msg() {
if (confirm('Deseas aceptar','titulo de cabecera')) {
--aca mi condición
}
no da error pero sigue mostrando igual la pantalla
hola karla
ResponderEliminarel tema es que el confirm() no tiene para personalizar el titulo
si quieres algo como eso tendrias que ir a un dialogo de jquery
jalert demo
jAlert,jConfirm,jPrompt VS alert y lo tradicional
saludos
hola leandro tengo un pregunta
ResponderEliminares sobre como inyectar un codigo html en especial un radio button a un string .formt en c#
nota en vb no tengo problema en c# es mi problema
output.Text = String.Format("<input type=""radio"" name=""ContactoGrillaRadio"" id=""RowSelector{0}"" value=""{0}""", intIndexContacto.ToString)
output.Text &= " />"
Espero que me pueda dar una ayuda muchas gracias
Que tal Leandro,
ResponderEliminarTengo una pregunta, a que se debe que despues de ejecutar el codigo javascript la fuente de la pagina web cambie de estilo y tamaño?
Estoy enredado en esto.
Saludos.
Hola muestra tardes alguien me puede ayudar como agregar la referencia System.Web.UI.WebControls en c#
ResponderEliminarmuchas gracias saludos
hola Fernando
ResponderEliminaresta muy raro el planteo que realizas, si el proyecto es web ya tendria esta referencia
o sea trata de otro tipo de proyecto, como ser un Class Library ?
salvo que estes pensando alguna libreria para custom controles o quizas alguna para ayudarte con alguna funcionalidad que requiere la UI web, pero sino no es muy recomendable lo que pretendes realizar
saludos
hola Rodrigo
ResponderEliminarcomo generas el mensaje javascript, imagino usas el ScriptManager.RegisterStartupScript()
saludos
hola leandro, tengo una duda....
ResponderEliminarmi botón ya tiene su confirm y funciona perfectamente, pero debo validar unos dropdownlist antes de que arroje el confirm y no encuentro la manera de hacerlo, te comento como están mi código:
Propiedades del button
ID="btn_Generate" runat="server" Text="Generate Folders" OnClick="btn_Generate_Click" OnClientClick="if(!confirm('Are you sure want to create folder?')){return false}"
ValidationGroup="validators" CausesValidation="true"
FUNCIÓN BOTÓN
protected void btn_Generate_Click(object sender, EventArgs e)
{
Page.Validate("validators");
Generar();
}
entonces obviamente me debe validar al dar click en el botón, no encuentro la manera que valide al dar click en el botón antes de que me aviente el confirm.. que puedo hacer al respecto? Saludos y gracias!
hola Diana
ResponderEliminardeberias mover al funcion separandola del control usando
<script>
function confirmar()
{
var dato = document.GetElementByTagID("<%=DropDownList1.ClientID%>").value;
var seleccion = confirm('Are you sure want to create folder?');
if(seleccion)
{
//aqui otra logica
return true;
}
return false;
}
</script>
entonces defines
OnClientClick="return confirmar();"
saludos
entendido!, muchas gracias!!
ResponderEliminarSaludos!
Buen dia podria por favor corregir el link de descarga del codigo , estan rotos.
ResponderEliminarGracias
leandro disculpa las molestias queria saber algo como eliminar algun dato si tengo esto en un texbox ejemplo: gobierno.perez;gobierno.alejandro como te abras dado cuenta son dos personas, son usuarios de dominio, por otra lado en otro texbox guardo los nombre completos de las personas ejemplo esner geovanny perez, Alejandro Canche sosa, como le hago para borrar a alejandro de un los dos texbox, si un texbox puede visualizarlo y el otro no, es como tipo correo de gogle espero y me puedas ayudar gracias
ResponderEliminarhola
Eliminaro sea en el textbox tienes valores separados por punto y coma ?
si es asi podrias usar el Split() para separar cada item, localizar cual quieres remover y quitarlo de la lista
recuerda que podrias usar
List<string> partes = txtNombres.Test.Split(";").ToList();
al tener un List<> puedes usar el Remove() sobre el item que ya no quieres
luego usas
txtNombre.Text = string.Join(";" partes);
para unirlo nuvamente
saludos
se me olvido la programacion es en asp.net de C#
ResponderEliminarHola Leandro una preguntota
ResponderEliminarPara hacer validaciones con JavaScrip en TextBox desde ASPX es lo mismo en VIsual Basic
hola
EliminarEs que Visual Basic no tiene nada que ver con javascript, este ejecuta del lado del cliente y ademas la notacion es similar a c# o java
saludos
Hola Leandro, no funciona el link de descarga de la versión de c# , te agradezco mucho si lo pones en funcionamiento de nuevo.
ResponderEliminarHola Leandro, no funciona el link de descarga de la versión de c# , te agradezco mucho si lo pones en funcionamiento de nuevo.
ResponderEliminarLeandro una Ayuda Porfavor. bueno tengo una sistema desarrollado en asp.net 2010 en c# , tengo el menu dinamico y resulta que cuando invoco a la pagina StatisticsReport.aspx me sale el siguiente error:
ResponderEliminarhttp://demo.pe/index.aspx?ReturnUrl=%2fSystemError.aspx%3faspxerrorpath%3d%2fReport%2fStatisticsReport.aspx
hola
EliminarVeo que se obtiene un Object not found
Pero esto no sucede cuando ejecutas desde el VS ?
Que pasa si deshabilitas el control de erroes y dejas que aparezca la pagina de asp.net asi puedes analizar el StackTrace del problema y conocer donde se genera
saludos
Leandro lo que pasa que en mi trabajo tenemos 1 servidor de desarrollo en donde esta almacenada la aplicacion y cuando lo correo desde ahi no hay problema si me muestra el formulario StatisticsReport.aspx . El problema es al publicar el formulario StatisticsReport.aspx en el area de servidor de prueba ahi me sale el siguiente error :
Eliminarhttp://demo.pe/index.aspx?ReturnUrl=%2fSystemError.aspx%3faspxerrorpath%3d%2fReport%2fStatisticsReport.aspx
Asumo que mi error seria en que no lo estoy publicando correctamen podrias ayudarme en ese problema que tengo ?
hola
EliminarLo que aconsejaria es que habilites para ver la pagina de error de asp.net y asi obtendrias el StackTrace del problema, pudiendo identificar donde se produce
Quizas no sea un problema de publicacion, sino me parece que es de datos.
pero quita esa pagina de error y deja que asp.net muestre la suya, o en todo caso cuando capturas el error loguea el StackTrace del Exception para tener una idea de donde se genera el problema y poder analizar esa seccion de codigo
saludos
la ruta dinamica en la que la invoco estabien, he revisado los .dll , y el web config he revisado y nada ayuda leandro
ResponderEliminarHola Leandro, tengo una inquietud: si quisiera agregar un string adicional al que se fija en la parte de "confirm(mensaje)" de manera dinámica, como podría hacerlo desde el código en c#?, no se si es clara mi pregunta. De antemano muchas gracias.
ResponderEliminarhola
Eliminarsi el mensaje esta en el OnClientClick no vas a poder hacelro dinamico, para hacerlo desde c# necesitas estar del lado del servidor por lo que requieres un post y en el evento armar el mensaje y enviarlo al cliente usando ScriptManager.RegisterStartupScript()
saludos
hola
ResponderEliminarpero es un error que se genera cuando compilas o al ejecutar?
podrias ver de cambiar el parametro dice "alerta" por diferentes textos ya que esto deberia ser un texto diferentes para cada mensaje, si registras mas de uno
saludos
Hola. Buenos días.
ResponderEliminarNecesito saber si de alguna manera me podría ayudar a mí, yo tengo una tabla de materiales, almacena cada material que tiene un modelo (hablo de ropa), necesito hacer que todo el material de un modelo lo pueda copiar a la misma tabla pero cambiando la talla del modelo, ya que son varios modelos iguales y lo único que cambia es la talla, ocupa el mismo material pero no sé como hacer para que cuando busque el modelo y mande los datos al gridview pueda copiar desde un botón, y sólo poder poner el nuevo modelo al que le registraré el material. Estoy trabajando en Visual Studio 2012 asp.net c# con Sql Server Management Studio.
Espero darme a entender y me pueda ayudar.
Buen día.
hola
EliminarNo deberias crear duplicado de datos, si necesitas hacer esto es porque le modelo de las tablas esta mal diseñado.
Porque no creas uan tabla de talles y crear una relacion muchos a muchos entre el material y los talles? entonces un material podrias relacionarlo con los talles que tenga disponible, de esta forma no tienes que duplicar los materiales.
La pregunta seria conoces sobre normalizacion de la base de datos?
saludos
Buenas tardes.
EliminarMuchas gracias por responder.
Mire la tabla que le menciono yo la realicé y tiene los siguientes campos:
CLAVE_CONSUMOS, CLAVE_MODELO, MODELO, CLAVE_MATERIAL, CLAVE_INTERNA, DESCRIPCION, CANTIDAD.
Cada campo que menciona una "clave" la mando llamar de otra tabla por lo que son llaves foráneas, no tengo mucho conocimiento sobre la normalización de las bases de datos.
Más o menos entiendo lo que trata de explicarme, lo que estoy haciendo es, que desde un webform doy de alta los materiales a cierto modelo y necesito que cuando tenga ya dados de alta los 10 materiales que se le asignan a cada modelo, tener un botón de "Copiar Registros" y al presionar me permita seleccionar el nuevo modelo al que le asignaré dichos materiales y de esta manera guarde esos 10 registros con el nuevo modelo dentro de la misma tabla.
Lo que trato de hacer es que sea muy sencillo para el usuario que utilizará dicho módulo, entre menos complicado sea mucho mejor.
Si pudiera darme algún correo o algo para contactarlo y poder mandarle pantallas del avance que tengo, ya que he hecho varias cosas que si me permite copiar los registros pero es un poco complicado y aún tengo errores.
Espero contar con su respuesta, de antemano muchísimas gracias.
Los modelos ya están dados de alta en una tabla y el material también ya está registrado en otra, no lo doy de alta en el formulario sino que sólo jalo los datos de las tablas y les asigno a los modelos el diferente material, creo que en esa parte cambié un poco las cosas de manera que me parece que no me doy a entender.
Eliminarhola
EliminarPero si copias esos 10 materiales para asignarle un nuevo modelo seran 10 materiales distintos porque tendran un Id (clave material) nuevos. O sea no seran los mismo 10 materiales anteriores con el modelo que les asigmes, sino que seran entidades de material diferentes. Es por eso que mencionaba la relacion muchos a muchos, porque serian los mismo materiales (mismos id) que relacionas con distintos medelos mediante la tabla intermedia (la que permite la relacion muchos a muchos)
saludos
Creo que no me he dado a entender muy bien, tengo una tabla que se llama "MODELOS" (donde almaceno por ejemplo "PANTALÓN_MD"), otra tabla que se llama "MATERIALES" (por ejemplo "CIERRE 32").
EliminarEn la tabla "CONSUMOS" que le mencione en el comentario anterior voy a mandar llamar el modelo "PANTALÓN_MD"y le asignaré el material "CIERRE 32" además de mandar llamar sus respectivas claves, y yo capturo la cantidad de "cierres" que necesita el pantalón.
Cuando ya esté guardado este registro quiero copiarlo a otro modelo que se llama "PANTALÓN_XL" ya que dicho modelo necesita exactamente las mismas características que tiene el modelo anterior, viéndolo ya más claro la tabla quedaría así:
CLAVE_CONSUMOS-CLAVE_MODELO---MODELO------CLAVE_MATERIAL-CLAVE_INTERNA-DESCRIPCION-CANTIDAD
......1...........145........PANTALÓN_MD.......35...........10025......"CIERRE 32"....2....
......2...........146........PANTALÓN_XL.......35...........10025......"CIERRE 32"....2....
Espero haberme dado a entender y muchas gracias.
hola
EliminarEs bastante extenso de tratar este tema por este medio, aconsejaria que lo plantees en el foro, quizas de Sql Server foro ya que por lo visto se trata de un tema de datos.
No evaluaste realizar la repflica usando trigger en la tabla? un trigger es basicamente un evento que se dispara cuando insertaras, actualizas o eliminas, pudiendo replicar datos a otras tablas con estas operaciones, pero lo realizas a nivel de base de datos
saludos
Hola. Buenos días.
ResponderEliminarNecesito saber si de alguna manera me podría ayudar a mí, yo tengo una tabla de materiales, almacena cada material que tiene un modelo (hablo de ropa), necesito hacer que todo el material de un modelo lo pueda copiar a la misma tabla pero cambiando la talla del modelo, ya que son varios modelos iguales y lo único que cambia es la talla, ocupa el mismo material pero no sé como hacer para que cuando busque el modelo y mande los datos al GridView pueda copiar desde un botón, y sólo poder poner el nuevo modelo al que le registraré el material. Estoy trabajando en Visual Studio 2012 asp.net c# con Sql Server Management Studio.
Espero darme a entender y me pueda ayudar.
Gracias y Buen día.
Hola Leandro.
ResponderEliminarPues lo estoy tratando de hacer mediante un procedimiento almacenado, tengo la tabla TBL_CONSUMOS y cree otra que se llama TBL_CONSUMOS_COPIAR en esta tabla puse los mismos campos que en la primera, solamente lo diferente sería que a la última le agregué la clave primaria que distingue a la tabla.
Primero va a insertar en la tabla TBL_CONSUMOS_COPIAR los datos que se inserten en la tabla TBL_CONSUMOS, luego compara si el modelo que tiene el registro es diferente al que se va a copiar y ahora va a copiar o insertar en la tabla TBL_CONSUMOS los datos que se acaban de insertar en la tabla TBL_CONSUMOS_COPIAR, después vuelve a comparar que el modelo vaya a ser direfente al que se va a copiar y va a seleccionar el dato de la tabla consumos para modificar el registro cambiando la clave del modelo y el modelo (esto lo estoy haciendo para que me pueda copiar ese registro a la tabla consumos y tener todos los datos ahí, fue la única manera que pensé para que se copiaran a la misma tabla).
No sé si me dé a entender bien, pero igual lo publicaré en el foro que me indicó.
Este sería el procedimiento:
@modelo VARCHAR(50),
@id_modelocop int,
@modeloCopiar VARCHAR(50)
AS
BEGIN
INSERT INTO TBL_CONSUMOS_TEMP (CLAVE_CONSUMOS, CLAVE_MODELO, MODELO, CLAVE_MATERIAL, CLAVE_INTERNA, DESCRIPCION, CANTIDAD)
SELECT * FROM TBL_CONSUMOS WHERE MODELO = @modelo
if @modelo <> @modeloCopiar
INSERT INTO TBL_CONSUMOS (CLAVE_MODELO, MODELO, CLAVE_MATERIAL, CLAVE_INTERNA, DESCRIPCION, CANTIDAD)
SELECT CLAVE_MODELO, MODELO,CLAVE_MATERIAL, CLAVE_INTERNA, DESCRIPCION, CANTIDAD FROM TBL_CONSUMOS_COPIAR
WHERE CLAVE_MODELO <> @id_modelocop
UPDATE TBL_CONSUMOS SET CLAVE_MODELO = @id_modelocop, MODELO = @modeloCopiar WHERE MODELO = @modeloCopiar --AND MODELO = @modelo AND ID_MODELO = @id_modelocop
END
if @modelo <> @modeloCopiar
BEGIN
SELECT * FROM TBL_CONSUMOS WHERE CLAVE_MODELO <> @id_modelocop AND MODELO = @modelo AND MODELO <> @modeloCopiar UPDATE TBL_CONSUMOS_COPIAR
SET CLAVE_MODELO = @id_modelocop, MODELO = @modeloCopiar WHERE MODELO = @modelo
END
hola
EliminarLa verdad es que no llego a entender para que haces todos esto de comparar y copiar. Si querias mantener un historico de cambios no debes comparar nada es siempre volcar sobre la tabla historica, en la cual deberias definir un campo de fecha. Es mas esto se suele realizar on triggers en la db
saludos
Necesito comparar para poder copiar el registro a la misma tabla de tal manera que me conserve todos los registros en una misma para que cuando el usuario busque un modelo y lo quiera copiar al otro existan los registros, no sé si me dé a entender.
EliminarY si conozco acerca de los triggers pero si pudiera ayudarme para ver de qué manera puedo aplicarlo a mi tabla se lo agradecería.
Buen día.
Hola Leandro.
EliminarQuería decirte que modifique el procedimiento de acuerdo a otros ejemplos que encontré y ya me funciona, así quedó el procedimiento:
create procedure Copiar_Materiales (
@modelo varchar(50),
@id_modelocop int,
@modeloCopiar varchar(50))
AS
IF @modelo = @modeloCopiar
BEGIN
PRINT('Error')
RETURN END
INSERT TBL_CONSUMOS
SELECT ID_MODELO = @id_modelocop, MODELO = @modeloCopiar, ID_PROD_AVIOS, CVE_INTERNA, DESCRIPCION, CANTIDAD FROM TBL_CONSUMOS
WHERE MODELO = @modelo
RETURN 0
Pero ahora tengo un problema, quisiera hacer que compare los registros al querer copiar un modelo hacia otro y que si ya se han copiado esos registros al tal modelo no me permita hacerlo.
Podrías ayudarme a hacer que no me inserte registros repetidos dentro del procedimiento?
De antemano muchas gracias y buen día.
Leandro muy buen block,como podria hacer si tengo algo así:
ResponderEliminarDim js As String
js = " if (confirm ('¿Desea realizar la Baja del alumno?'))" + _
"window.location='bajasGrupo.aspx';" + _
"else" + _
" window.location='../inicio.aspx';"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Success", js, True)
y que al darle aceptar al boton mande a llamar por ejemplo otra funcion ,la cual ejecuta un procedimiento almacenado,para guardar registros
hola
EliminarPartamos de la base que no definiria todos ese javascript desde .net, sino que lo generas en na funcion en el html y en el RegisterStartupScript() indicas que ejecute esa funcion que ya esta en el codigo cliente.
Para ejecutar un procedure desde codigo cliente vas a tener que usar ajax, puntualmente jquery $.ajax para invocar un webmethod en la pagina y es alli donde estaria el procedure
saludos
que tal leandro oye tengo un boton que al clickearlo deberia lanzar un confirm si es que no existe el dato en base de datos y dependiendo de esto realizar algo del lado del servidor, hago la consulta mediante $.ajax y cuando lanza el confirm se ejecuta al mismo tiempo el metodo onclik del boton como puedo hacer que primero termina de ejecutar la funcion javascript y junto con el ajax y despues ejecutar el codigo del servidor?
ResponderEliminarHola Leandro.
ResponderEliminarTengo una consulta, estoy tratando de hacer esto pero con una funcion diferente, pero lo hago en asp.net Vb.
El problema es que estoy trabajando con masterpage y nose como llarmalo desde ahi.
Nose si me explico.
Como se haría lo siguiente: Tengo una pagina web en asp.net c#, con un DropDownList, el cual al elegir una de las opciones, me dirige a otra pagina, lo que deseo es que al elegir la opcion me salga un mensaje o ventana emergente, de clic en aceptar en dicha ventana y me redireccione a la otra pagina
ResponderEliminarhola
EliminarPara lograr eso la redireccion vas a tener que realizasla desde codigo cliente utilizando javascript
O sea, el evento al servidor del dropdownlist podria generar el alert o confirm de javascript, pero luego sigues en el cliente usando
window.location.href = 'pagina.aspx';
con eso redireccionas
saludos
Gracias, fue de muy buena ayuda. saludos
ResponderEliminarHola
ResponderEliminarComo le haría para que el mensaje me lo ponga en la posición que yo le indique
Hola podrias publicar de nuevo el ejemplo en vb ya no esta disponible, gracias!!
ResponderEliminar