Entradas etiquetadas ‘C#’
C# – Cargar enumerador a DropDownList
Desarrollando un pequeno proyecto web me econtre con un sencillo problema: Cargar los items de un enumerador en un DropDownList (combobox).
Teniendo:
enum MiEnumerador { colombia = 0 , ecuador = 1, peru = 2, venezuela = 3, bolivia = 4 }
Para cargar este enumerador en un dropdownlist:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
drpMiDrop.DataSource = Enum.GetNames(typeof(MiEnumerador ));
drpMiDrop.DataBind();
}
}
Espero sea de ayuda. Un Saludo.
Implementación algoritmo K-NN (K vecinos mas cercanos) en C#
Comparto con uds una implementacion del algoritmo K-NN en VisualStudio 2010 usando c# como lenguaje que realice en una clase del curso de mineria de datos.
El comprimido contiene:
- Proyecto en visual studio 2010
- Backup de la base de datos que contiene el dataset para la busqueda
No olviden ajustar la cadena de conexion del proyecto para que coincida con la información de su equipo.
Descargar desde Aqui
Observación: el archivo se encuentra en mi cuenta de SkyDrive, bastara con dar click en Descargar.
Saludos.
Manejar conflicto de Hilos, Windows Forms C#
Teniendo aplicaciones que requieren de dos o mas hilos es frecuente encontrarse con conflictos de hilos, estos conflictos son comunmente generados porque un hilo intenta acceder a uno o mas recursos de otro hilo. En este caso se puede aplicar esta solucion para manejar el conflicto.
En el siguiente ejemplo se pretende modificar el mensaje de un Label desde un hilo cualquiera.
// Se declara el delegado para el manejo del conflicto public delegate void DelegadoMensaje (String mensaje) ;class MiClase{// Se declara el evento que posteriormente sera el encargado de llamar a la funcion que manejara el conflictoprivate event DelegadoMensaje EventoMostrarMensaje;// Constructor de la clase, asigna al evento la funcion que debe manejar el mensajepublic MiClase(){EventoMostrarMensaje += new DelegadoMensaje(VeElMensaje);}// Esta funcion se encarga de manejar el conflicto mediante la invocacion de un nuevo delegadopublic void VeElMensaje(string Mensaje){DelegadoMensaje Mi_Conectar_Resultado;Mi_Conectar_Resultado = new DelegadoMensaje(VerResultado);this.Invoke(Mi_Conectar_Resultado, new Object[] { Mensaje });}// Esta funcion modifica los recursospublic void VerResultado(String mensaje){this.lblRecurso.Text = mensaje;}// Esta funcion es la que se invoca desde cualquier otro hilopublic void ColocarMensaje(String mensaje){EventoMostrarMensaje(mensaje);}public static void main(String args[] ){Thread miHilo = new Thread(new ThreadStart(MiFuncion));miHilo.start();}// Esta funcion representa el hilo que intenta acceder a los recursos de otro hilopublic void MiFuncion(){ColocarMensaje("HOLA MUNDO!");}}Espero que sea de ayuda.Saludos
View y MultiView, todo en una sola pagina y mas seguro!
Cuando estamos diseñando interfaces para sitios web muchas veces tendemos a generar muchos formularios relacionados con la misma cuestion. Cuando diseñamos la gestion de personas, por ejemplo, tendemos a generar mas de una pagina para ese menester, tal vez generamos una pagina para ingreso, otra para consulta y asi…
Cuando tenemos muchos formularios y el ancho de banda no colabora mucho, el manejar muchas paginas para una sola gestion puede ser un punto en contra de nuestra aplicacion, con el componente View y Multiview provisto por VisualStudio podemos en una sola pagina colocar tantos formularios como queramos sin que se sobrecargue la pagina, podemos hacer que solo se muestre un formulario a la vez y cambiar a otro mucho mas rapido que cuando los tenemos en paginas diferentes.
Otra ventaja importante del uso de View y MultiView es que nos podemos evitar el envio de valores entre pagina y pagina que puede generar inseguridad en nuestra aplicacion, cuando manejamos todo en una misma pagina no tendremos redireccionamientos basta con almacenar los valores necesarios en variables temporales en el codebehind de la pagina.
La idea: Cada Multiview va a ser un contenedor de uno o mas elementos View, en el diseño vamos a tener una lista de compoenentes View, pero cuando ejecutemos la aplicacion solo se vera un View al tiempo (solo el que este activo). Para navegar entre ellos podemos incluir botones u otra cosa, el View visible se define con la propiedad: ActiveViewIndex del control Multiview.
El codigo de los botones seria el siguiente:
protected void btnAnterior_Click(object sender, EventArgs e)
{
if(MultiView1.ActiveViewIndex > 0)
MultiView1.ActiveViewIndex = MultiView1.ActiveViewIndex – 1;
}
protected void btnSiguiente_Click(object sender, EventArgs e)
{
if(MultiView1.ActiveViewIndex < MultiView1.Views.Count – 1)
MultiView1.ActiveViewIndex = MultiView1.ActiveViewIndex + 1;
}
El anterior codigo debe repetirse para cada para de botones de la vista o hacer una par de funciones e invocarlas desde los botones.
Ahh y no olvides establecerle al multiview una vista por defecto (la primera a mostrar)
El funcionamiento seria mas o menos asi:
Y dando click en el boton siguiente tendremos:
Asi podremos insertar mas de una funcionalidad por pagina sin saturar nuestro proyecto de webforms ademas de evitarnos el envio de parametros que pueden generar inseguridad en nuestra aplicacion.


