14 Julio 2009 por chuletillas
Problema: Tengo un un código de color en HTML (Por ejemplo #E8E8F3 y quiero usarlo en .NET, pero no puedo usarlo directamente porque los colores en .NET tienen que ser de la clase System.Drawing.Color y no sé a qué color se corresponde.
Solución: Usar la siguiente función
System.Drawing.ColorTranslator.FromHtml("#E8E8F3")
Y si lo queremos a la inversa, esto nos convertiría un System.Drawing.Color en una cadena con el código HTML
System.Drawing.ColorTranslator.ToHtml(color);
Escrito en .net | Deja un Comentario »
3 Junio 2009 por chuletillas
Problema: No sé qué es lo que le he instalado al Visual Studio 2008, que desde hace unos días no me funciona el intellisense cuando trabajo con XAML (Ni con WPF ni con Silverlight)
Solución: Para ver si estamos hablando de lo mismo, comprueba en el registro (usando el regedit) si está vacía la entrada:
Para Windows de 32 bits:
HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32
Para Windows de 64 bits:
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32
Si la entrada (Default) está vacía entonces el problema se puede solucionar de la siguiente forma:
Abriendo una ventana de símbolo de sistema y escribiendo(cuidado que en vista habrá que estar como administrador)
Para Windows de 32 bits:
regsvr32 "%CommonProgramFiles%\Microsoft Shared\MSEnv\TextMgrP.dll"
Para Windows de 64 bits:
regsvr32 "%CommonProgramFiles(X86)%\Microsoft Shared\MSEnv\TextMgrP.dll"
Reinicia el Visual Studio y listo.
Solución tomada de aquí
Escrito en Uncategorized | Deja un Comentario »
8 Abril 2009 por chuletillas
Problema: Tengo una expresión del tipo <condicion> ? expresion1 : expresion2 y al compilar me da el siguiente error: “Type of conditional expression cannot be determined because there is no implicit conversion between <tipo1> and <tipo2>
Solución: Este problema aparece porque las expresiones de este tipo solo pueden devolver un tipo, no dos. Al poner tipos diferentes como resultado de expresion1 y expresion2 el compilador nos daría ese error. Tenemos que decidir que tipo va a devolver la expresión y hacerle un casting a una de las dos expresiones. O si por un lado queremos devolver null y por otro un tipo primitivo (los cuales no pueden ser null) podemos usar los nullables. Ej:
string filtro;
(filtro.Equals(“todos”)) ? (bool?)null : false;
Escrito en Uncategorized | Deja un Comentario »
2 Abril 2009 por chuletillas
Problema: Estoy haciendo un select en SQL Server, y quiero que lo que me devuelve la consulta me venga ya formateado (por ejemplo, redondeado con 2 decimales y los miles separados por comas)
Solución: Para los decimales podemos usar la funcion “cast”. Por ejemplo, haciendo cast de nuestro valor al tipo money conseguiremos el formato con 2 decimales:
CAST(@variable AS money)
Para darle un formato que nos separe la crifra por miles, podemos usar la función “convert”:
CONVERT(varchar, CAST(@variable AS money), 1)
Y finalmente un ejemplo usándolo todo junto para que devuelva una cadena de texto con la cantidad formateada y la moneda añadida:
CAST(CONVERT(varchar, CAST(@variable AS money), 1) AS varchar) + ‘Euros’
Más info sobre éstas funciones aquí
Escrito en Uncategorized | Deja un Comentario »
30 Marzo 2009 por chuletillas
Problema: Quiero obtener el contenido del atributo onclick de un objeto javascript para manipularlo con las funciones de cadena, por lo que lo necesito como un objeto tipo string. Pero al obtenerlo mediante objeto.getAttribute(“onclick”) no me vuelve como una cadena de texto, ya que no puedo aplicar ningún método de cadena sobre lo que me devuelve.
Solución: Mediante getAttribute obtendremos lo que realmente hay en ese atributo, que seguramente será una función anónima. Si lo necesitamos como una cadena de texto, podemos hacer lo siguiente:
var obj = document.getElementById("objId");
var attributesArray = obj.attributes;
var contenido = attributesArray["onclick"].nodeValue;
Escrito en Uncategorized | Deja un Comentario »
30 Marzo 2009 por chuletillas
Problema: Quiero reemplazar todas las apariciones de un caracter o una cadena en un objeto string de javascript, pero al usar el método “replace” sólo me sustituye la primera ocurrencia, no los demás.
Solución: Tal y como funciona la función replace de javascript, solo sustituye la primera ocurrencia que se encuentra. Para sustituir todas podemos usar replace reiteradamente mediante un bucle for, o bien y más elegante, usar expresiones regulares. Por ejemplo:
micadena.replace( new RegExp(“[\’]”,”g”),”” )
Nos eliminaría todas las comillas simples que aparecieran en nuestra cadena.
Escrito en Uncategorized | Deja un Comentario »
24 Marzo 2009 por chuletillas
Problema: Al ir a publicar un formulario infopath que lleva código en un servidor Sharepoint, cuando va a hacer el build del código, me sale un error diciendo que ha habido un error al compilar el código asociado al formulario. Sin embargo, si le hago el build a la solución desde el editor, la solución compila bien.
Solución: Comprueba que la ruta a la carpeta donde se encuentra la solución no sea demasiado larga. Se puede hacer la prueba moviendo la carpeta con la solución al directorio raiz, e indicarle a infopath la nueva ruta de la solución.
Escrito en .net, MOSS | Deja un Comentario »
25 Febrero 2009 por chuletillas
Problema: Estoy usando callbacks para traerme datos del servidor (implementando el interfaz System.Web.UI.ICallbackEventHandler) , pero cuando lanzo varios a la vez (es decir, que algunos callbacks empiezan sin que hayan terminado los anteriores) esto no parece comportarse como debiera.
Solución: Hay un error en la implementación del método WebForm_CallbackComplete() que es generado por asp.net cuando estamos usando el método Page.ClientScript.GetCallbackEventReference para que nos cree los scripts necesarios para realizar los callbacks (versión de cuando escribo esto: .NET 3.5)
Para arreglarlo hay que sustituir la función en cuestión por ésta otra. Para ello la incluimos en nuestra página aspx:
function WebForm_CallbackComplete_SyncFixed() {
for (var i = 0; i < __pendingCallbacks.length; i++) {
callbackObject = __pendingCallbacks[ i ];
if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
if (!__pendingCallbacks[ i ].async) {
__synchronousCallBackIndex = -1;
}
__pendingCallbacks[i] = null;
var callbackFrameID = "__CALLBACKFRAME" + i;
var xmlRequestFrame = document.getElementById(callbackFrameID);
if (xmlRequestFrame) {
xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
}
WebForm_ExecuteCallback(callbackObject);
}
}
}
Y para que nuestra página use esta función en vez de la que da problemas, incluimos también esto al final de la página:
if (typeof (WebForm_CallbackComplete) == "function") {
WebForm_CallbackComplete = WebForm_CallbackComplete_SyncFixed;
}
El código para la solución ha sido tomado de aquí
Escrito en .net, javascript | Deja un Comentario »
24 Febrero 2009 por chuletillas
Problema: Estoy enviando un correo utilizando la función SPUtility.SendEmail de Sharepoint, pero los correos llegan truncados.
Solución: La función SPUtility.SendEmail no trunca el correo en sí, sino las líneas que lo componen. Seguramente el body está formado en una sola línea que excede el número de caracteres por líneas permitido. Con partir el body en varias lineas se debería solucionar.
Escrito en MOSS | Deja un Comentario »
16 Enero 2009 por chuletillas
Problema: ¿Cuáles son los tipos de columna que se le pueden meter a un gridview que está enlazado a datos? y luego, ¿cómo puedo acceder a los datos ?
Solución: En éste enlace se pueden ver los tipos de columnas
http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.datacontrolfield(VS.80).aspx
Y para acceder a los datos, usaremos el evento RowDataBound, el cual se lanza después de que se haya realizado un bind a una fila por cada registro. Como parámetro nos llegará la fila a la que se le acaba de hacer el bind, y para acceder a los datos solo tendremos que hacer lo siguiente:
String texto = ((DataRowView) e.Row.DataItem)["campodelaquerydeldataset"].ToString();
Donde “e” sería el argumento del evento que contiene a la fila afectada.
Escrito en .net | Deja un Comentario »