lunes, 13 de septiembre de 2010
Filtrar y Ordenar un DataTable con un DataView
miércoles, 1 de septiembre de 2010
Transacciones en SQL Server 2005
jueves, 3 de abril de 2008
Calendario en Javascript
El procedimiento para realizarlo es el siguiente:
1. Se agrega en la carpeta del proyecto los scripts (estilos).
2. Después dentro de Head en el código HTML, se escribe el siguiente código:
3. Por ultimo, dentro de body en el codigo HTML, se escribe el siguiente código:
Si se desea presentar el calendario con solo pulsar un textbox, el código es el siguiente:
Espero les sea de gran ayuda este código para crear un calendario.
Abrir un popup (ventana emergente) y actualizar la ventana padre
En el load se escribe el siguiente código:
NOTA: La línea que va antes de eventtarget son dos guión bajo seguidos.
En el botón Abrir se escribe el siguiente código para mostrar la ventana emergente o ventana hijo:
Ventana Hijo
En el botón Guardar se escribe el siguiente código para mostrar un mensaje y actualizar:
NOTA: La línea que va antes de doPostBack son dos guión bajo seguidos.
Como ven, es muy sencillo actualizar los datos.
Espero que les sea de mucha utilidad.
martes, 11 de marzo de 2008
HotSpots en ImageMap …áreas circulares en una imagen que causan postbak al dar clic sobre ellas.
El control ImageMap es usado para desplegar una imagen clickeable en una página web que puede ser usada para hacer un PostBack al WebServer, o para abrir otra página siguiendo una URL.
A diferencia del control ImageButton, este permite definir regiones “hot-spots” de formas circulares CircleHotSpot, Rectangulares RectangleHotSpot, y Poligonales PolygonHotSpot que causan PostBack cuando el usuario da clic en ellas, mientras que en un ImageButton dando clic en cualquier parte de la imagen se hace un PostBack.
El primer HotSpot definido toma precedencia sobre los demás, por ejemplo si tenemos dos CircleHotSpot el primero con un radio menor al segundo y ambos con el mismo centro.
El círculo menor quedaría dentro del segundo pero su área clickeable siempre estaría activa y limitada por el área mayor.
Para el siguiente ejemplo, primero Agregaremos un ImageMap y un Label a nuestra página:
Como serán utilizadas varias zonas circulares o CircleHotSpot ara ello he creado un procedimiento que recibe las coordenadas en (x,y) del centro, el radio y la descripción en este caso el valor que será devuelto al hacer el PostBack.
public void zona_circular(int x, int y,int radio,string descripcion)
{
CircleHotSpot chs;
chs = new CircleHotSpot();
chs.X = x;
chs.Y = y;
chs.Radius = radio;
chs.PostBackValue = descripcion;
ImageMap1.HotSpots.Add(chs);
}
En el evento Load de la página, establecemos la imagen que será mostrada en el ImageMap1, el AlternateText que será el comentario mostrado cuando se posicione el Mouse sobre el control y el HotSpotMode que da el comportamiento para los objetos HotSpot de un ImageMap cuando se hace clic en ellos, en este caso es PostBack pero puede ser Inactive (sin comportamiento), Navigate (se desplaza a una URL).
ImageMap1.ImageUrl = "~/images/homer.jpg";
ImageMap1.AlternateText = "This is a picture of Homero";
ImageMap1.HotSpotMode = HotSpotMode.PostBack;
Después llamaremos a la función zona_circular(X,Y,Radio,Descripción); cuantas veces sea necesario de acuerdo a las zonas que deseemos definir:
zona_circular(124, 151, 6, "Left Eye Center");
zona_circular(133, 145, 35, "Left Eye");
zona_circular(193, 145, 6, "Right Eye center");
zona_circular(183, 173, 20, "Nose");
zona_circular(155, 233, 50, "Mouth");
Finalmente en el evento clic del ImageMap agregamos la siguiente línea:
Label1.Text = "You clicked the " + e.PostBackValue;
Con esta línea traemos el valor asociado al funcionamiento del Hotspot.
De esta forma cada vez que demos clic en un área hotspot como resultado tendremos en la etiqueta o label el valor del PostBack.
En las imagenes puede apreciarse el mensaje del PostBackValue en el label después de haber dado clic en los HotSpots del ImageMap.
DataSet, XML y Flash
Pues bien para crear un archivo XML desde el DataSet basta lo siguiente:
'Esta es una clase que facilita la conexion y la ejecusion de consultas
Dim Conn As New Conectividad()
'Mi Objeto DataSet
Dim ds As New DataSet
'Llenamos el DataSet con el resultado de la consulta
ds = Conn.Consulta("Select * from datos", strError)
'E invocando al metodo WriteXml podemos crear tan facilmente un archivo XML
ds.WriteXml(Server.MapPath("MyXML.XML"), XmlWriteMode.IgnoreSchema)
Una ves creado el archivo XML, en Flash bastará este script para leer y mostrar cada uno de los registros del XML
//Este va en el fotograma 1
//Variables globales para control de recorrido por el XML
_global.pos=0;
_global.limite=0;
//Nuevo Objeto XML
var obj_xml:XML = new XML();
obj_xml.ignoreWhite = true;
//Esta Funcion sera invocada cuando se intente cargar un archivo XML
obj_xml.onLoad = function(exito) {
//La variable exito sera "true" si se cargo bien y "false" si el archivo no //existe o no se pudo cargar por errores en su estructura
if (exito) {
//Numero de registros
_global.limite=obj_xml.firstChild.childNodes.length;
//modelo, des y precio son los nombres de las instancias de componentes TextInput
modelo.text=obj_xml.firstChild.childNodes[_global.pos].childNodes[1].firstChild.nodeValue;
des.text=obj_xml.firstChild.childNodes[_global.pos].childNodes[3].firstChild.nodeValue;
precio.text=obj_xml.firstChild.childNodes[_global.pos].childNodes[2].firstChild.nodeValue;
//img es una instancia del componente Loader, al cual le indicamos la ruta de la //imagen a mostrar
img.contentPath=obj_xml.firstChild.childNodes[_global.pos].childNodes[4].firstChild.nodeValue;
img.load();
} else {
trace("Error"); //Que indique que hubo un error si no cargo el archivo
}
};
//Esta es la función que invoca la carga del archivo
function cargarXML() {
obj_xml.load("myXML.XML");
}
//Cargamos la funcion al iniciar
cargarXML();
Si deseamos un recorrido por cada uno de los registros deberemos incluir un boton de avance y otro de retroceso y escribir el siguiente script
//Boton retroceso
on (release) {
//Llamamos a la función de carga del archivo XML
_global.pos--;//Disminuimos la posicion actual
if (_global.pos<0) //Si se paso del indice 0
_global.pos=0; //Lo ponemos en 0
cargarXML(); //Cargamos el archivo nuevamente, pero con la posicion indicada
}
//Boton Avanzar
on (release) {
//Llamamos a la función de carga del archivo XML
_global.pos++;//aumentamos la posicion actual
if (_global.pos>_global.limite - 1) //Si nos pasamos del limite
_global.pos=_global.limite-1;// Ponemos el indice en el ultimo registro
cargarXML(); //Cargamos nuevamente el archivo
}
Espero y alguna ves les sea util este sencillo ejercicio
lunes, 10 de marzo de 2008
Desde el sotano....tool tips dinámicos
toolTip1.SetToolTip(listBox1, “Este es mi Tip”);
Sin embargo, si se deseará que el ToolTip cambiará para cada elemento de un ListBox o de un ComboBox, no es tan sencillo ya que no acepta en sus parámetros un evento como SelectedIndex o SelectedValue.
En un “googlazo” me encontre con un algoritmo que mostraba como realizarlo. Ahora solo faltaba tomar la información de una Base de Datos y que el ToolTip cambiará para cada elemento de la lista. Y esto fue lo que sucedió:
1.- Se considera de antemano que se tiene listo todo el formulario completo, de acuerdo a las necesidades. Así mismo una Base de Datos, por ejemplo, un directorio telefónico. Entre esos controles se encuentra un ListBox, el cual fue llenado en su propiedad DataSource una consulta hecha a la Base de Datos. Digamos una lista de nombres, y que se desea mostrar en el ToolTip su telefono.
2.- Una vez tomado de la Caja de Controles un ToolTip, nos dirigimos al evento SelectedIndexChanged del listBox1 y comenzamos a codificar:
private void lst_users_SelectedIndexChanged(object sender, EventArgs e)
{
/*Creamos un nuevo DataTable auxiliar y en el almacenamos el DataSource que contenga el listBox, convirtiendolo previamente*/
DataTable dt_aux_u = (DataTable)this.lst_users.DataSource;
/*Se prepara una variable de tipo de string que almacenará el texto del ToolTip*/
string telefono = "";
/*En una variable de tipo entero, se almacena el indíce del elemento seleccionado de la lista, previamente convirtiendolo a entero*/
int index = (int)this.lst_users.SelectedIndex;
/*Si el indice del elemento seleccionado se encuentra entre el rango de la lista*/
if (index >= 0 && index <>
{
/*La variable telefono almacena del DataTable el valor donde la fila con valor index y la columna “telefono” coincida. Esto esta basado en la Base de Datos*/
telefono = dt_aux_u.Rows[index][“telefono"].ToString();
//Si lo seleccionado no contiene nada
if (telefono =="")
{
//Se prepara un texto especial, para que el ToolTip no se muestre vacio
telefono = "Esta persona no tiene telefono";
}
}
/*Al final, establecemos el ToolTip con el control Windows Forms y la Variable*/
this.toolTip1.SetToolTip(this.lst_users, telefono);
}
3.- Cabe determinar que es necesario tener funcionando primero el acceso a la Base de Datos y el llenado del listBox correctamente, ya que la informacion para llenar el Tooltip lo tomamos del DataSource del control.
Esperando que sea util, así comentarios y sugerencias.
Dr. Omm