[How To] Obtener el total de una Columna Vertical en un DataGridView en C#
Consulta de Foro: Como puedo obtener el total de las celdas con decimales de una columna en un datagridview.
Solución Corta:
DataTable dt = ((DataTable)dataGridView1.DataSource);
object total = dt.Compute(“SUM(UnitPrice)”, null);
this.TxtSumarTotal.Text = total.ToString();
UnitPrice: Campo a calcular.
[How To] Cambiar la extensión de uno ó más archivos (VS2008, 2010)
Hola y al grano!!, hace poco me solicitaron un ejemplo de como cambiar la extensión de uno ó más archivos, recordando el curso del 70-536 para el MCTS, había un tema referente a esto, pero la verdad núnca llego a funcionar, almenos no como yo quería.
Para poder cambiar la extension de un archivo, se hace uso del método “ChangeExtension” de la clase Path, este método permite realizar el “convert” a uno ó más archivos.
NOTA: El método ChangeExtension, NO CAMBIA FÍSICAMENTE la extensión del archivo, pero si cambia la extensión de la cadena alfanumérica que representa el nombre y la ruta del archivo. ¿ ahora ?, si queremos hacer el cambio de forma física, tenemos que hacer otra jugada!!!
Desing! (más que obvio verdad…?)
Code!
using System.IO;
public void CambiarExtension(string ruta)
{
try
{
string newExtension = this.CboNuevo.Text;
string oldExtension = “*.” + this.CboAnterior.Text;
string[] files = Directory.GetFiles(ruta, oldExtension, SearchOption.AllDirectories);
foreach (var file in files)
{
string newfile = Path.ChangeExtension(file, newExtension);
File.Move(file, newfile);
}
}
catch { MessageBox.Show(“Ocurrio un Error”); }
}
private void BtnExaminar_Click(object sender, EventArgs e)
{
FolderBrowserDialog Directorio = new FolderBrowserDialog();
if (Directorio.ShowDialog() == DialogResult.OK)
{
this.txtruta.Text = Directorio.SelectedPath;
this.BtnCambiarExtension.Enabled = true;
}
}
private void BtnCambiarExtension_Click(object sender, EventArgs e)
{
try
{
this.CambiarExtension(this.txtruta.Text);
MessageBox.Show(“se cambio la extension de manera correcta”);
}
catch { MessageBox.Show(“ERROR AL INTENTAR CAMBIAR LA EXTENSION DEL ARCHIVO”); }
}
Nota: Por motivos de tiempo… (bueno en realidad por flojera…
) obviare la explicación de este código, aunque es más que sencillo entender la funcionalidad… verdad??
Enjoy!!
Agujeros Negros en el .NET [I Parte]
Reflexionar información de miembros a reflexionar información de Métodos hay una gran diferencia, la razón más sencilla es que existen demasiados y distintos miembros, incluyendo propiedades, campos, métodos, constructores, etc.
Cuando se quiere o necesita obtener información de un miembro en especial, se emplea la clase: MemberInfo de Reflection!, hasta ahi todo bien, MemberInfo cuenta con una propiedad llamada: MemberType para determinar que tipo de miembro se estará consultando.
Cuando se trata con miembros de un tipo especifico, se puede obtener una información más detallada sobre ese miembro utilizando la clase más apropiada. Por ejemplo, digamos que necesitamos abstraer información más detallada sobre una propiedad desde la clase PropertyInfo. Tambien están disponibles las clases similares como ConstructorInfo, MethodInfo, FieldInfo, EventInfo y ParameterInfo. Cada una de estas clases tiene su correspondiente método: “GetXXXX” en el tipo contenido.
Como ejemplo propuesto, plantearemos una clase <genérica> con sus respectivos campos, y propiedades.
Y en el método principal iria!
La aplicación ejectuada da como resultado:
Un detalle, es que se puede ver el VALOR DE UN CAMPO PRIVADO!!, OJO!!, que estamos en el Framework 4.0!!, en fin…, es uno de los tantos HUECOS QUE TIENE EL .NET, pero de esta forma se puede ver e incluso modificar el valor de un campo con ámbito privado!!, la solución la mostraré en otra entrada…, ya que anímicamente no me siento nada bien …
Enjoy!!
CheckedListBox con Origen de Datos + ADO.NET
Recientemente necesitaba mostrar los datos de una forma Multiple y Selectiva, es decir una fusión de “ComboBox y ListBox”, lo cúal da como resultado un CheckedListBox.
this.CheckedListBox1.Datasource = dt; // DATATABLE
this.CheckedListBox1.Valuemember = “CAMPO_KEY”;
this.CheckedListBox1.displayMember = “CAMPO_DATO”;
Nota: Miren como escribí las propiedades, las minúsculas y mayúsculas estan mal escritas.
Pero de todas maneras, donde esta el IntelliSense??? ![]()
Aparte de ello, la descripción del error indica que NO es posible enlazar datos a ese control.
Inclusive en la misma documentación del MSDN, MICROSOFT NOS DICE QUE ESTO NO SE PUEDE, AQUI LES DEJO EL LINK.
“Microsoft: No es posible enlazar datos a CheckedListBox. Utilice ComboBox o ListBox en su lugar para esto. Para obtener más información, vea Cómo: Enlazar un control ComboBox o ListBox de formularios Windows Forms a datos.” Eso es lo que MICROSOFT nos dice.
NOTA: EN REALIDAD LAS PROPIEDADES SI ESTAN AHI, SOLO QUE EL INTELLISENSE NO LAS DETECTA, SEGÚN SE, POR UNA MALA IMPLEMENTACION EN EL ATRIBUTO:
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
[Solución]
La 1ra solución y la más sencilla, seria que escribieras bien, pero si lo que quieres es “QUE EL INTELLISENSE TE MUESTRE CADA UNA DE LAS PROPIEDADES”, entonces haz lo siguiente: “PERO NO LO RECOMIENDO”
Se debe de crear un componente que herede las funcionalidades básicas del control CheckedListBox, aunque la información del MSDN dice que no se puede, de todas formas decidí comprobarlo.
[Heredamos del control CheckedListBox]
Jaaaa!!!!!!, no que no??
Listo, ahora podrémos utilizar (Ver) las propiedades:
- DataSource
- ValueMember
- DisplayMember
NOTA: Lo mostrado es un dato curioso ya que mediante la herencia se pudo “ROMPER” ciertos parámetros y conceptos no permitidos. ![]()
NOTITA: En contenido del artículo ha sido comprobado con el Framework 2.0, 3.0, 3.5, menos con el Framework 4.0, imagino que el resultado es el mismo.
failed to load SQL Prompt add-in!!
failed to load SQL Prompt add-in, ese fué el mensaje con el que me tope el día de hoy al intentar reutilizar el SQL Prompt, esto se dio porque estaba actualizando mi SQL Server 2008 y entonces el Add-in fallo, y para no volvér a instalarlo ejecute un comando que en mi caso fué para la versión 3 del SQL Prompt.
Para ejecutar dicho comando se hace lo sgte:
Menu Inicio + Ejecutar + Aqui_Pegas_Tu_Version_SQLPrompt
(Para la Versión 3)
%SYSTEMROOT%\Microsoft.net\Framework\v2.0.50727\regasm “%ProgramFiles%\Red Gate\SQL Prompt 3\RedGate.SQLPrompt.SSMSUI.dll
(Para la Versión 4)
%SYSTEMROOT%\Microsoft.net\Framework\v2.0.50727\regasm “%ProgramFiles%\Red Gate\SQL Prompt 4\RedGate.SQLPrompt.SSMSUI.dll
Notita: Si te percataste solo cambie el numero (3 por el 4), esto dependiendo de la version!!
En todo caso, te recomiendo que antes le heches un vistazo al área de soporte recomendada para el RedGat desde aqui ==> http://www.red-gate.com/supportcenter/
Nota: Si conocen otra técnica pués comentenla… ; -)))
Arma tu Propio Linux!!
Asi es!!, ya estan aqui!!, Los Linux Rompecabezas!!!!!!
Por el momento ya me arme un par de Linux!!
See You… ![]()
Vida ó Rutina Diaria de un Geek !!
Posiblemente muchos geeks ó frikis (Si ese loquito que anda gastando luz todo el día), se sientan identificados con esta imagen, donde se muestra de manera muy clara como es REALMENTE LA VIDA DEL DÍA A DÍA DE UN INFORMÁTICO!!
Personalmente me encantan las de:
- Ir a casa (En especial cuando esos dias son los Viernes!!!)
- Internet (A Excepción de cuando falla la conexión)
- Almorzar (Siempre y cuando no preparen Sopa T______T)
- Ir a la cama (Bueno eso nunca lo hago… ) : – )
- Tambien la de clases, (Pero el de cuando esta durmiendo… zZzZzZzZz)
Chistes Informáticos (I Parte – Soporte Técnico)
El otro día, para ser exacto hace 2 días, estaba leyendo unos chistes informáticos (como para distraerme y alejarme por un momento del estres
), púes encontre un “chiste” muy colorido, el cuál te comparto ahora mismo.. ; -)))))
Help Desk: “Prodigy, Buenos Días, departamento de soporte técnico”.
Usuario: “¿A donde hablo?”
Help Desk: (…ahh,pendejo, ¿Pues a donde le acabo de decir?) “A Soporte Técnico, en que puedo servirle? “
Usuario: “Ah, mire, tengo un problema”
Help Desk: (Si, de hecho no creo que llame para saludarme…) “Que pasa?”
Usuario: “No puedo entrar a la Red!”
Help Desk: (Qué raro..!) “Cual es el error que recibe?”
Usuario: “Pues mira, aparece un mensaje que dice:’U-S-E-R-N-A-M-E-N-O-T-F-O-U-N-D’, y no se porqué…”
Help Desk: “Bien, Cual es su ‘Username’?”
Usuario: “Que es un YUSERNEIM?”
Help Desk: (Carajo, se supone que saben ingles) “El nombre de Usuario que usa para conectarse a la red”
Usuario: “Ah, pues no se…”
Help Desk: (… No maaames..!) “Mire, cada vez que enciende la computadora aparece una ventanita donde hay tres renglones, el primero dice ‘Username’,el segundo ‘Password’ y el tercero ‘Domain’… ¿Que dice el primer renglón?”
Usuario: “No dice nada… bueno, si decía, pero lo borré”
Help Desk: (Como decía mi abuelito, en manos de los pendejos, ni la pólvora arde) “Bien, Cuál es su nombre?”
Usuario: “Por qué?”
Help Desk: (Porque quiero conocerlo mejor, pendejo.) “Porque si me dice su nombre puedo buscar en la base de datos su ‘Username’…”
Usuario: “¿En serio?”
Help Desk: (Enciendo el primer cigarro del día, porque parece que voy a tener una muy larga plática con este guey) “Si, se lo juro”
Usuario: “Okey, me llamo Dionisio Pérez”
Help Desk: (Puta madre, solo demostró dos cosas, con razón no sabe ni que es un username) “OK” un momento por favor”
Usuario: “¿Que hace?
Help Desk: (Como si realmente me fuera a entender si le digo lo que estoy haciendo) “Buscando su nombre en la base de datos”
Usuario: “Ah… ¿Cómo?”
Help Desk: (¿Cómo? ¿Cómo? ¡Como chingan!, pero ahí vamos…) Pues mire, estoy haciendo un Query en la base de datos”
Usuario: “¿Que es un cueri?”
Help Desk: (Esa ni siquiera se la voy a contestar…) “…”
Usuario: “¿Bueno?, ¿Esta ahí?”
Help Desk: (Tomo otra bocanada de mi cigarro y cuento hasta 3,415. Ya estoy mejor) “Si, permítame un momento por favor”
Usuario: “Está bien. Lo que pasa es que estoy preocupado porque hace mas de tres meses que no he leído mi imeil”
Help Desk: (¿Y después de 3 meses se preocupa? …Puta, este pendejo si tiene pedos) “No se preocupe, en un momento lo resolvemos”
Usuario: “Okis”
Help Desk: (¿Okis? ¿Dijo Okis? ¡Este wey es puto! ) “Ya está, su Username es ‘PEREZD’ (debí imaginármelo antes)”
Usuario: “Okis, ¿Qué hago con eso?”
Help Desk: (Tatúeselo en una nalga para que la próxima vez que me llame con un problema como éste, solo tenga que decirle que ponga un espejo) “Recuerda lo que le mencione de la ventanita que aparece cuando arranca la computadora?”
Usuario: “No”
Help Desk: (Obvio, eso me saco por hacer preguntas estúpidas, este pobre wey como va recordar) “Pues mire, cuando arranca la computadora…”
Usuario: “Ah, si!, Ya recuerdo…”
Help Desk: (Milagro ¡Dios existes!) “Bien, pues escríbalo en el primer renglón con mayúsculas y en el renglón de abajo escriba su password”
Usuario: “Cual pasguor?”
Help Desk: (Pasguor????? Qué rápido se terminan los cigarros cuando hablo con mis Usuarios) PASSWORD!, es la clave que usa para conectarse a la red”
Usuario: “Ah, bueno, pues mi nombre es Dionisio Pérez”
Help Desk: (Pues no voy a felicitarlo por eso, su papá quiso quedar bien con un compadre ¿no?) “Aja…”
Usuario: ” ..Okis”
Help Desk: (Okis, qué chingados… ¡pinche puto!) “…”
Usuario: “¿Bueno? ¿Bueno? ¿Esta ahí?”
Help Desk: “Si, aquí estoy para ayudarle no se preocupe” pinche joto)
Usuario: “¿Cual es mi pasguor?”
Help Desk: (¿Y como putas madres se supone que yo debo saberlo?) Pues no lo sé, esa clave solo la debe saber usted”
Usuario: “¿Ah si?”
Help Desk: (Nooo, Pero que pendejada estoy diciendo! ¿Por que no va al periódico y lo publica a ocho columnas?)”Si”
Usuario: “Déjeme ver… ¿No será ‘dionisio’?”
Help Desk: (¡”#”%&%%&/)/=()? ZZZZZZZZZZZ. hijo de la chingada apurate que ya me… pobre pendejo y además joto.) “… “
Usuario: “Déjeme intentar…”
Help Desk: (.!”#$$#%#$%&&%/()=()= mejor hubiera sido repartidor de pizzas..)”…”
Usuario: “¡Si, ése es! ¡Oiga! De hecho aquí lo tengo apuntado en un POSTIT. Y aquí dice también ‘yuserneim’, ‘pasguor’ y ‘domein’. Beno, pues qué bueno que tenía aquí este papelito. ¡Hasta luego!”
Help Desk: (¡Hijo de tu reputísima madre!) “Hasta luego, que tenga buen día y recuerde estamos para servirle”
Usuario: “Gracias, igualmente”
Help Desk: (¿Igualmente… de qué me puede servir este joto?) “bye”.
RING RING, SUENA EL TELÉFONO
Help Desk: “Soporte Técnico, Buenas Tardes”.
Usuario: “¿A donde hablo?”…
Help Desk: (Me carga la chingada… ¡¡¡Va de nuez!!!)
jejeje, espero que con esto te hayas alejado por un momento del estres!!
See You… ![]()
Ficheros *.Zip desde .Net
Hace un tiempo encontré en CodePlex, una libreria que permite trabajar los Ficheros.Zip desde .NET, realmente es muy buena y fácil de usar!!! Sorry por el (Copy/Paste)
DotNetZip is an easy-to-use FREE class library and toolset for manipulating zip files or folders. Zip and Unzip is easy: with DotNetZip, .NET applications written in VB, C# – any .NET language – can easily create, read, extract, or update zip files. It works on Mono or MS .NET.
DotNetZip works on PCs with the full .NET Framework, and also runs on mobile devices that use the .NET Compact Framework. Create and read zip files in VB, C#, or any .NET language, or any scripting environment. DotNetZip supports these scenarios:
- an ASP.NET app that dynamically creates ZIP files and allows a browser to download them
- a Windows Service that periodically zips up a directory for backup and archival purposes
- a WPF program that modifies existing archives – renaming entries, removing entries from an archive, or adding new entries to an archive
- a Windows Forms app that creates AES-encrypted zip archives for privacy of archived content.
- An administrative script in PowerShell or VBScript that performs backup and archival.
- a WCF service that receives a zip file as an attachment, and dynamically unpacks the zip to a stream for analysis
- an old-school ASP (VBScript) application that produces a ZIP file via the COM interface for DotNetZIp
- a Windows Forms app that reads or updates ODS files
- creating zip files from stream content, saving to a stream, extracting to a stream, reading from a stream
- creation of self-extracting archives.
Puedes descargar la Libreria completa desde Aquí:
http://www.codeplex.com/DotNetZip
También existen ejemplos para VB.NET, C#.NET, LINQ, ASP.NET:
http://dotnetzip.codeplex.com/wikipage?title=Examples&ProjectName=dotnetzip
Imports Ionic.Zip Public Class Form1 Private Sub BtnZip_Click(...) Try Using zip As ZipFile = New ZipFile zip.AddFile("C:\ExtraerRun.exe", "") zip.AddFile("C:\Splash.bmp", "") zip.AddFile("C:\ConvertNet2\Convert.exe") zip.Save("C:\MyZipFile.zip") End Using Catch ex1 As Exception Console.Error.WriteLine("Excepción: {0}", ex1.ToString) End Try End Sub End Class
See You.. ![]()















