Abrir una ventana de cmandos e ir a la siguiente dirección:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
2) Ejecutar los siguientes comandos:
a. aspnet_regiis.exe –i
b. aspnet_regiis.exe –e
3) Resetear el IIS con iisreset
¿Por qué aguardas con impaciencia las cosas? Si son inútiles para tu vida, inútil es también aguardarlas. Si son necesarias, ellas vendrán y vendrán a tiempo. Amado Nervo
domingo, 21 de febrero de 2010
sábado, 20 de febrero de 2010
Web Crystal Reports: Botones Navigation no funcionan.
Cuando uno hace clic sobre uno de los botones de navegación de un reporte que está en una página Web, éste se pierde y aparece un error informando que los parámetros de logeo son incorrectos.
Una solución efectiva es utilizar el evento Navigate del control CrystalReportViewer. En dicho evento poner el código que genera el reporte en su defecto llamar al método o función que genera dicho reporte.
Otra alternativa recomendada según lo que he leido en diferentes sitios en internet es utilizar el evento Page_Init de la página Web para generar el reporte; y con base en los ejemplos que me encontré, también se recomienda utilizar una variable de sesión para guardar el reporte, de esa manera el reporte no se estaría generando a cada rato si no más bien cuando sea extrictamente necesario volver a generar el reporte.
Una solución efectiva es utilizar el evento Navigate del control CrystalReportViewer. En dicho evento poner el código que genera el reporte en su defecto llamar al método o función que genera dicho reporte.
Otra alternativa recomendada según lo que he leido en diferentes sitios en internet es utilizar el evento Page_Init de la página Web para generar el reporte; y con base en los ejemplos que me encontré, también se recomienda utilizar una variable de sesión para guardar el reporte, de esa manera el reporte no se estaría generando a cada rato si no más bien cuando sea extrictamente necesario volver a generar el reporte.
miércoles, 17 de febrero de 2010
Javascript: InnerHTML no cambia después de la primera vez.
Intentaba cambiar dinámicamente el atributo innerHTML de un elemento span. El código JS inicial funcionaba solo la primera vez, pero al dar clic en el botón que hace el cambio del atributo, no funcionaba.
El objeto Span estaba dentro de un elemento Div y éste a su vez es mostrado por un ModalPopupExtender que además está fuera del UpdatePanel.
El problema era que al dar clic sobre el botón que muestra un texto que dice "Sí" del ModalPopup, éste no hacía nada y el modal popup no se cerraba.. Entonces procedí a crear el Trigger del botón. Tuve el resultado esperado, pero al intentar borrar el segundo item de un grid, el mensaje del span no aparecía. A pesar de que la propiedad innerHTML se estaba asignando, éste no se mostraba en pantalla.
Solución: Quitar el trigger y programarle al botón "Sí" codigo javascript para cerrar el modalpopup con javascript, y listo!
Otra alternativa es inyectar el elemento TextNode con ayuda del DOM (Document Object Model).
Ejemplo:
var padre = $get('div');
while (padre.firstChild)padre.removeChild(padre.firstChild);
var nuevo = document.createElement("span");
nuevo.appendChild(document.createTextNode("Nuevo valor:" + codigo);
padre.appendChild(nuevo);
El objeto Span estaba dentro de un elemento Div y éste a su vez es mostrado por un ModalPopupExtender que además está fuera del UpdatePanel.
El problema era que al dar clic sobre el botón que muestra un texto que dice "Sí" del ModalPopup, éste no hacía nada y el modal popup no se cerraba.. Entonces procedí a crear el Trigger del botón. Tuve el resultado esperado, pero al intentar borrar el segundo item de un grid, el mensaje del span no aparecía. A pesar de que la propiedad innerHTML se estaba asignando, éste no se mostraba en pantalla.
Solución: Quitar el trigger y programarle al botón "Sí" codigo javascript para cerrar el modalpopup con javascript, y listo!
Otra alternativa es inyectar el elemento TextNode con ayuda del DOM (Document Object Model).
Ejemplo:
var padre = $get('div');
while (padre.firstChild)padre.removeChild(padre.firstChild);
var nuevo = document.createElement("span");
nuevo.appendChild(document.createTextNode("Nuevo valor:" + codigo);
padre.appendChild(nuevo);
domingo, 14 de febrero de 2010
Asp.Net: Inyectar código Jasvascript.
Código de ejemplo para ejecutar un código inyectado después de un submit de la página:
Poner la siguiente línea en el Event Handler del control, ya sea un botón, un LinkButton o cualquier otro control del lado del servidor:
ClientScript.RegisterStartupScript(Me.GetType(), "focus", "ScrollToElement('" + ServerControlName.ClientID +"');", True)
La function de javascript que está en un archivo por aparte es la siguiente:
Poner la siguiente línea en el Event Handler del control, ya sea un botón, un LinkButton o cualquier otro control del lado del servidor:
ClientScript.RegisterStartupScript(Me.GetType(), "focus", "ScrollToElement('" + ServerControlName.ClientID +"');", True)
La function de javascript que está en un archivo por aparte es la siguiente:
function ScrollToElement(element){
var pos = Sys.UI.DomElement.getBounds($get(element)).y;
document.documentElement.scrollTop = pos;
}
Pasar primera letra de una palabra a mayúscula
Ejemplo:
Dim cu As TextInfo = Thread.CurrentThread.CurrentCulture().TextInfo
Dim resultado as string = cu.ToTitleCase("titulo")
Referencia:
http://support.microsoft.com/kb/312890/es
Dim cu As TextInfo = Thread.CurrentThread.CurrentCulture().TextInfo
Dim resultado as string = cu.ToTitleCase("titulo")
Referencia:
http://support.microsoft.com/kb/312890/es
domingo, 7 de febrero de 2010
Ajax .Net: El control CascadingDropDown devuelve [Error 500]
Después de horas y horas para saber por qué el control CascadingDropDown de Ajax me devuelve la cadena [Error 500] como un item en el cuadro de lista colgante del propio control, resultó que el método del servicio web debe tener como nombres de parámetros
los siguientes:
- Primer nombre de parámetro: knownCategoryValues
- Segundo nombre de parámetro: category
La definición de la función en los lenguajes más utilizados en Visual estudio son las siguientes:
VB .Net:
Public Function Obtener_ListaTerritorial(ByVal knownCategoryValues As String, ByVal category As String) As AjaxControlToolkit.CascadingDropDownNameValue()
C#:
los siguientes:
- Primer nombre de parámetro: knownCategoryValues
- Segundo nombre de parámetro: category
La definición de la función en los lenguajes más utilizados en Visual estudio son las siguientes:
VB .Net:
Public Function Obtener_ListaTerritorial(ByVal knownCategoryValues As String, ByVal category As String) As AjaxControlToolkit.CascadingDropDownNameValue()
C#:
[WebMethod]
public CascadingDropDownNameValue[] GetColorsForModel(
string knownCategoryValues,
string category)
miércoles, 3 de febrero de 2010
ASP .Net: ¿Cómo obtener el ID de un GridView que no muestra campo ID.
Éste caso consiste en que se desea obtener el valor del campo llave de una tabla cuando se dispare un evento cualquiera del Grid. De alguna forma se desea obtener el valor de la llave con la condición adicional de que el campo llave no aparece en el Grid ya que éste es invisible o se decidió no ponerlo en el grid.
Dicho caso está relacionada con una entrada anterior titulada: ASP .NET Recuperar ID de fila en gridview.html
La situación aquí es que se creó una columna en el grid pero se olvidó poner a dicha columna el atributo DataField="CODIGO".
Siendo más claros, el código para la columna que se metió en el grid manualmente es el siguiente:
Ahora bien, el código anterior lo que hace es que aparezca una columna adicional en el Grid, aunque el DataSource no contenga esa columna.
En el code-behind, auque tratemos de recuperar el valor del campo llave que en éste caso se llama COLUMNA, ¡SERÁ CASO PERDIDO GARANTIZADO!.
Para soluionarlo se debe agregar el atributo DataField a la columna y de esa forma se logrará obtener el valor del campo llave aunque éste no esté en el GridView.
Ejemplo:
Para terminar el ejemplo, ¿Cómo hacer que una celda del grid haga algo cuando le demos clic a un link dentro de la celda o a un control cualquiera dentro de la celda?
La solución más rápida es utilizar el evento RowDataBound y dentro de éste poner
un código equivalente al siguiente:
El código anterior utiliza el método GetPostBackClientHyperlink del objeto ClientScript para insertar código Javascript del lado del cliente. La ventaja de hacerlo así, es que éste genera una llamada a la función __doPostBack que también está del lado del cliente provocando una llamada al evento o eventos del objeto GridView (los eventos en el lado del servidor del GridView).
Ahora bien, una vez creado completamente el gridview en pantalla, en caso de que el usuario haga clic sobre el link que está en la celda de la fila, éste disparará al evento RowCommand del GridView. En el evento RowCommand se puede preguntar por los parámetros CommandName y CommandArgument para obtener los valores tanto del tipo de operación que se realiza o preguntar por el valor adicional que se pasa en CommandArgument.
Dicho caso está relacionada con una entrada anterior titulada: ASP .NET Recuperar ID de fila en gridview.html
La situación aquí es que se creó una columna en el grid pero se olvidó poner a dicha columna el atributo DataField="CODIGO".
Siendo más claros, el código para la columna que se metió en el grid manualmente es el siguiente:
<asp:boundfield headertext="Modificar" datafield="CODIGO"> </headerstyle></asp:boundfield>
Ahora bien, el código anterior lo que hace es que aparezca una columna adicional en el Grid, aunque el DataSource no contenga esa columna.
En el code-behind, auque tratemos de recuperar el valor del campo llave que en éste caso se llama COLUMNA, ¡SERÁ CASO PERDIDO GARANTIZADO!.
Para soluionarlo se debe agregar el atributo DataField a la columna y de esa forma se logrará obtener el valor del campo llave aunque éste no esté en el GridView.
Ejemplo:
<asp:boundfield headertext="Modificar" DataField="CODIGO">
</headerstyle></asp:boundfield>
La solución más rápida es utilizar el evento RowDataBound y dentro de éste poner
un código equivalente al siguiente:
If e.Row.RowType = DataControlRowType.DataRow Then e.Row.Cells(0).Text = "<a href=" + Page.ClientScript.GetPostBackClientHyperlink(Me.GridView1, "Modificar$" + e.Row.Cells(1).Text, False) + ">" + "[Modificar Fila]" + "</a>" End If
El código anterior utiliza el método GetPostBackClientHyperlink del objeto ClientScript para insertar código Javascript del lado del cliente. La ventaja de hacerlo así, es que éste genera una llamada a la función __doPostBack que también está del lado del cliente provocando una llamada al evento o eventos del objeto GridView (los eventos en el lado del servidor del GridView).
Ahora bien, una vez creado completamente el gridview en pantalla, en caso de que el usuario haga clic sobre el link que está en la celda de la fila, éste disparará al evento RowCommand del GridView. En el evento RowCommand se puede preguntar por los parámetros CommandName y CommandArgument para obtener los valores tanto del tipo de operación que se realiza o preguntar por el valor adicional que se pasa en CommandArgument.
domingo, 24 de enero de 2010
domingo, 10 de enero de 2010
Asp.Net: Evento para control dinámico
En éste sitio, explican como agregar un evento a un control que fue creado dinámicamente en ASP.NET: leo-munoz.blogspot.com
Ajax .Net: El Control UpdatePanel
Basta información, trucos y tips sobre el control UpdatePanel en Revista MSDN
viernes, 8 de enero de 2010
Javascript: Problemas con evento onclick y setAttribute
Poner una función como la que sigue, definitivamente no funcinará en IE6 pero si en le resto de exploradores:
boton.setAttribute('onclick', 'Ejecutar(' + "'btn" + Pintar.lastAssignedId + "');");
La solución es usar la siguiente sintaxis:
boton.onclick = function () {Ejecutar(boton.id);};
Referencia en: codingforums.com
boton.setAttribute('onclick', 'Ejecutar(' + "'btn" + Pintar.lastAssignedId + "');");
La solución es usar la siguiente sintaxis:
boton.onclick = function () {Ejecutar(boton.id);};
Referencia en: codingforums.com
Suscribirse a:
Entradas (Atom)