Si sale este error, cambiar el nombre del directorio app_code porque el mismo al parecer se compila 2 veces
Archivo de la categoría: .Net
The type ‘
Forzar descarga de un archivo
Esto es para forzar la descarga de un pdf puede ser util para imagenes y/o otras cosas que los navegadores por defecto abren.
Colocar en el page_load:
Response.ClearHeaders(); Response.ClearContent(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment; filename=mifactura.pdf"); Response.WriteFile(@"C:\choco\test.pdf"); Response.End(); |
Esto va a hacer que el navegador pregunto donde guardar el archivo que esta en el servidor C:\choco\test.pdf con el nombre mifactura.pdf
El aspnet_wp.exe no se puede iniciar
Cuando sale este error en el visor de eventos de windows:
aspnet_wp.exe could not be started. HRESULT for the failure: 80070545
En el directorio:
%WINDIR%\Microsoft.NET\Framework\v1.0.3705\CONFIG
Buscar el archivo, machine.config, y en la seccion processModel cambiar el tag de userName de machine a system. O crear un usuario dentro del panel de control y agregar alli el usuario y el password, en userName y en password respectivamente
Hacer referencia a un control dentro de un formview
Para usar un control dentro de un formView es necesario encontrarlo y convertirlo desde el tipo control al tipo que es realmente el control. Ej:
TextBox ex=(TextBox )frmData.FindControl("TextBox1"); ex.text= DateTime.ToString(); |
Error No se pudo cargar viewstate
No se pudo cargar viewstate. El árbol de control en que se está cargando viewstate debe coincidir con el árbol de control que se utilizó para guardar viewstate durante la solicitud anterior. Por ejemplo, al agregar controles de forma dinámica, los controles agregados durante una devolución deben coincidir con el tipo y posición de los controles agregados durante la solicitud inicial.
Se soluciona agregando: EnableViewState=»false» al tag Page de la vista de codigo de la pagina aspx.
Recuperar el id del ultimo registro insertado
Algo muy comun es querer saber el id del ultimo registro insertado, aca posteo un ejemplo de como hacer eso para una base de datos SQL Server en c#:
SqlConnection conn= new SqlConnection( ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString ); string insertStr = "INSERT INTO [tabla]([texto],[fecha]) VALUES(@texto,getDate()) ;SELECT Scope_Identity();"; SqlCommand cmd=new SqlCommand(insertStr,conn); cmd.Parameters.Add("@texto", SqlDbType.NVarChar).Value="El texto va aca"; cmd.Connection.Open(); string ret=cmd.ExecuteScalar().ToString(); cmd.Connection.Close(); |
La parte clave esta en la sentencia Select Scope_Identity() del sql.
Equivalente de limit de mysql dentro del .net
No llegue a encontrar un equivalente directo del limit dentro de otra base de datos que no sea Mysql, pero el framework .net da la siguiente posibilidad para emular esa funcionalidad:
SqlDataSource sds = new SqlDataSource( utils.getWebConfigConn("dbConnectionString"), "selec * from vendedores" ); DataSourceSelectArguments sa = new DataSourceSelectArguments(10, 20); DataView dv = (DataView)sds.Select(DataSourceSelectArguments .Empty); |
Lo anterior traera las filas comenzando por la 11 y terminando en la 30 (como hace el limit del mysql) dentro del dataset que esta en dv.Table
Cambiar el navegador por defecto en .Net
Al instalar una máquina lo primero que hay que hacer es instalar el Firefox y ponerlo como navegador como defecto de windows, pero si luego instalamos el .Net pasa que agarra el Firefox como navegador y suele ser molesto porque el IDE no detecta cuando cerramos la pagina, por lo que es recomendable el IE. (articulo original)
Click derecho en cualquier pagina del proyecto
Click en Add si se quiere agregar un navegador a la lista
Elegir cual se quiere setear como navegador predeterminado
Recorrer un hashtable con foreach en c#
Aca un ejemplo de como iterar dentro de un hashtable y crear un xmlDocument de paso:
protected void Page_Load(object sender, EventArgs e) { Hashtable xx = new Hashtable(); xx.Add("key1", "valor1"); xx.Add("key2", "valor2"); xx.Add("key3", "valor3"); xx.Add("key4", "valor4"); XmlDocument xd = documentInfoXML("Nombre", "Descriptor", "items", xx); Response.Write(xd.OuterXml); } public static XmlDataDocument documentInfoXML(string xmlDocumentNombre, string xmlDocumentDescriptor, string itemName, Hashtable keysValues) { XmlDataDocument xdd = new XmlDataDocument(); XmlNode xn = xdd.CreateNode(XmlNodeType.Element, xmlDocumentNombre, "NameSpace"); XmlAttribute xa = xdd.CreateAttribute("Descripcion"); xa.Value = xmlDocumentDescriptor; xn.Attributes.Append(xa); xdd.AppendChild(xn); foreach (DictionaryEntry item in keysValues) { XmlElement nodo = xdd.CreateElement(item.Key.ToString()); XmlText valor=xdd.CreateTextNode( item.Value.ToString()); xdd.DocumentElement.AppendChild(nodo); xdd.DocumentElement.LastChild.AppendChild(valor); } return xdd; } |
La parte propiamente teniendo en cuenta el titulo es la parte del foreach, un hashtable tiene DictionaryEntry como items, tanto el key como el value son objetos.
Despues en el resto del ejemplo creo un XmlDocument con el contenido del hashtable
Convertir de String a Byte Array
public static byte[] StrToByteArray(string str){ System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding(); return encoding.GetBytes(str); } |