A partir de este momento estaré inaugurando una nueva sección de videos en mi canal de youtube que consistirá en responder las dudas sobre desarrollo web, para lo cual los interesados deberán enviarme un correo con el siguiente formato:
Para: Luis.duenash@gmail.com
Asunto: Preguntas y Respuestas de Desarrollo Web .NET
Nombre Completo: Apellidos y Nombres
Ubicación Geográfica: Ciudad y País
Tipo de Perfil: Estudiante o Profesional
Lugar de: Estudio o Trabajo
Categoria de la Pregunta: Descrita mas abajo
Pregunta:
Lo mas detalla posible.....
Las Categorías pueden ser entre otras:
Lenguajes
- C#
- Visual Basic
.NET Framework
- ADO.NET
- Serialización
- Cifrado
- Reflection
- Programación Asíncrona
- Programación Paralela
ASP.NET
- Web Forms
- MVC
Servicios
- Servicios Web XML
- Servicios WCF
- Servicios Web API
Formatos de Datos
- Binario
- XML
- JSON
- CSV
Manejo de Archivos
- De Texto: TXT, CSV
- Office Open XML: XLSX, DOCX, PPTX
- Contenedores Comprimidos: OpenXPS y PDF
- Imagenes: Mapa de Bits (BMP, PNG, JPG, GIF) y Vectoriales (SVG)
Protocolos
- HTTP
- TCP
- Web Sockets
Front End
- JavaScritpt
- HTML
- CSS
Arquitecturas
- Orientada a Servicios (SOA)
- Distribuida con Capas (LDA)
- Ligera Sin Capas, etc.
Performance
- Lectura y Escritura de Archivos
- Concatenación de gran cantidad de datos
- Presentación en Pantalla de miles de registros o cientos de páginas
- Exportación e Importación de miles de registros
- Velocidad de Carga de una Página Web, etc.
Las preguntas No pueden ser sobre:
- Frameworks, como por ejemplo Entity Framework, LINQ, MyBatis, Hibernate, etc.
- Librerías, como por ejemplo jQuery, Angular, Bootstrap, Ember, React, DevExpress, etc.
En caso de preguntar sobre estos les explicaré porque no se debe usar (desventajas).
Blog de Luis Dueñas dedicado a la difusión del Desarrollo en Microsoft .NET, Visual Studio, WinForms, WebForms, MVC, ASP .NET, jQuery, AJAX, HTML5, JavaScript, Móviles, etc. Encontrarás Libros, Demos, Artículos Técnicos, Entrenamiento.
Mostrando las entradas con la etiqueta Web Forms. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Web Forms. Mostrar todas las entradas
miércoles, 29 de noviembre de 2017
Preguntas y Respuestas de Desarrollo Web en ASP.NET & JavaScript
Etiquetas:
.NET,
ADO.NET,
Archivos,
Arquitecturas,
ASP.NET,
C#,
CSV,
Desarrollo Web,
Javascript,
JSON,
MVC,
Performance,
Preguntas,
Protocolos,
Respuestas,
Servicios,
WCF,
Web API,
Web Forms,
XML
viernes, 24 de noviembre de 2017
El Manual del Día: Visual Web Developer Parte 2
MSDN - Manual de Visual Web Developer Parte 2
Titulo: Manual de Visual Web Developer Parte 2
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2008
Número de Páginas: 473
Indice del Manual de Visual Web Developer (Parte 2)
6. Introducción a la Infraestructura de ASP .NET
6.1. Información General sobre Controladores HTTP y Módulos HTTP
6.1.1. Cómo: Registrar Controladores HTTP
6.1.2. Cómo: Configurar una Extensión de Controlador HTTP en IIS
6.1.3. Tutorial: Crear un Controlador HTTP Sincrónico
6.1.4. Cómo: Crear un Controlador HTTP Asincrónico
6.1.5. Tutorial: Crear y Registrar Generadores de Controladores http
6.1.6. Tutorial: Crear y Registrar un Módulo HTTP Personalizado
6.2. Información General sobre la Administración de Estados de ASP .NET
6.2.1. Información General sobre las Cookies en ASP .NET
6.2.1.1. Cómo: Escribir una Cookie
6.2.1.2. Cómo: Leer una Cookie
6.2.1.3. Cómo: Eliminar una Cookie
6.2.2. Información General sobre el Estado de Vista en ASP .NET
6.2.3. Información General sobre el Estado de Sesión de ASP .NET
6.2.3.1. Identificadores de Sesión
6.2.3.2. Eventos de Estado de Sesión
6.2.3.3. Modos de Estado de Sesión
6.2.3.4. Proteger el Estado de Sesión
6.2.3.5. Cómo: Guardar Valores en un Estado de Sesión
6.2.3.6. Cómo: Leer los Valores de un Estado de Sesión
6.2.3.7. Implementar un Proveedor de Almacén de Estados de Sesión
6.2.4. Información General sobre el Estado de Aplicación de ASP .NET
6.2.4.1. Cómo: Guardar Valores en un Estado de Aplicación
6.2.4.2. Cómo: Leer los Valores de un Estado de Aplicación
6.2.5. Información General sobre las Propiedades de Perfil de ASP .NET
6.2.5.1. Identificación de Usuario para las Propiedades de Perfil de ASP .NET
6.2.5.2. Definición de las Propiedades de Perfil ASP .NET
6.2.5.3. Proveedores de Perfiles de ASP .NET
6.2.5.4. Proteger las Propiedades de Perfil
6.2.5.5. Tutorial: Mantener la Información de Usuarios de Sitios Web con Propiedades de Perfil
6.2.5.6. Usar Información de Perfiles con AJAX en ASP .NET
6.2.5.7. Implementar un Proveedor de Perfiles
6.2.5.8. Información General sobre el Servicio de Perfiles de WCF
6.2.5.8.1. Cómo: Habilitar el Servicio de Perfiles de WCF
6.2.6. Recomendaciones de Administración de Estado de ASP .NET
6.3. Enrutamiento de ASP .NET
6.3.1. Cómo: Definir una Ruta
6.3.2. Cómo: Crear una Dirección URL a partir de una Ruta
6.3.3. Cómo: Utilizar el Enrutamiento con Formularios Web
7. Utilizar Controles de ASP .NET
7.1. Controles de Usuario ASP .NET
7.1.1. Información General sobre los Controles de Usuario ASP .NET
7.1.2. Cómo: Convertir Páginas de Formularios Web Forms en Controles de Usuario
7.1.3. Cómo: Incluir un Control de Usuario en una Página Web ASP .NET
7.1.4. Cómo: Crear Instancias de Controles de Usuario ASP .NET mediante Programación
7.1.5. Cómo: Crear Controles de Usuario ASP .NET con Plantillas
7.1.6. Cómo: Crear Controles de Usuario ASP .NET
7.1.7. Cómo: Incluir Controles de Usuario ASP .NET en Páginas Web
7.1.8. Tutorial: Crear Elementos Reutilizables con Controles Usuario ASP .NET
7.2. Controles de Servidor ASP .NET
7.2.1. Información General sobre los Controles de Servidor Web ASP .NET
7.2.1.1. Cómo: Agregar Controles de Servidor Web a una Página de Formularios Web Forms mediante el Diseñador de Web Forms
7.2.1.1.1. Cómo: Agregar Controles de Servidor a una Página Web ASP .NET mediante la Sintaxis de ASP .NET
7.2.1.2. Cómo: Crear Plantillas de Controles de Servidor Web mediante el Diseñador
7.2.1.3. Cómo: Establecer las Propiedades de Estilo de un Control de Servidor ASP .NET en el Diseñador
7.2.1.4. Cómo: Establecer Propiedades de un Control de Servidor ASP .NET
7.2.2. Trabajar con Controles de Servidor Web ASP .NET
7.2.2.1. Cómo: Agregar Controles de Servidor a una Página Web ASP .NET mediante la Sintaxis de ASP .NET
7.2.2.2. Agregar Controles de Servidor HTML a una Página Web ASP .NET
7.2.2.2.1. Cómo: Agregar Controles de Servidor HTML a una Página Web mediante la Sintaxis de ASP .NET
7.2.2.2.2. Cómo: Convertir Controles de Servidor HTML en Elementos HTML
7.2.2.3. Cómo: Especificar si los Controles de Servidor Web ASP .NET se Publican en el Servidor
7.2.2.4. Controles de Servidor Web y Funciones del Explorador
7.2.2.4.1. Proteger Archivos de Definición de Explorador
7.2.2.5. Orden de Tabulación, Foco y Claves de Acceso en los Controles de Servidor Web de ASP .NET
7.2.2.5.1. Cómo: Establecer el Foco en los Controles de Servidor Web
7.2.2.5.2. Cómo: Establecer Teclas de Acceso para los Controles de Servidor Web
7.2.2.6. Controles de Servidor Web ASP .NET y Estilos de CSS
7.2.2.6.1. Cómo: Establecer Propiedades de Estilo de un Control de Servidor ASP .NET mediante Sintaxis de ASP .NET
7.2.2.6.2. Cómo: Establecer Propiedades de Estilo de un Control de Servidor ASP .NET mediante Programación
7.2.2.7. Plantillas de Controles de Servidor Web ASP .NET
7.2.2.7.1. Cómo: Crear Plantillas de Controles Web ASP .NET mediante Declaración
7.2.2.7.2. Cómo: Responder a Eventos Button en Controles Enlazados a Datos
7.2.2.7.3. Cómo: Crear Plantillas de Controles de Servidor Web ASP .NET Dinámicamente
7.2.2.8. Agregar Controles ASP .NET mediante Programación
7.2.2.8.1. Cómo: Agregar Controles a una Página Web ASP .NET mediante Programación
7.2.2.8.2. Controles de Servidor Web Dinámicos y Estado de Vista
7.2.2.9. Obtener Acceso a Controles ASP .NET mediante Programación
7.2.2.9.1. Identificación de Controles de Formularios Web Forms
7.2.2.9.2. Resolución del Identificador de un Control de Formularios Web Forms
7.2.2.9.3. Cómo: Localizar Controles Secundarios por Id en una Página Web
7.2.2.9.4. Utilizar una Colección de Controles en una Página Web
7.2.2.9.5. Cómo: Buscar Controles de Formularios Web Forms en una Página recorriendo la Colección Controls
7.2.2.9.6. Utilizar la Propiedad NamingContainer para Determinar el Contenedor de Nombres de un Control
7.2.2.9.7. Cómo: Obtener Acceso a Miembros de un Contenedor de Nombres de un Control de Servidor Web
7.2.3. Controles Estándar del Cuadro de Herramientas
7.2.3.1. Información General sobre AdRotator
7.2.3.1.1. Tutorial: Mostrar y Realizar un Seguimiento de los Anuncios con el Control AdRotator
7.2.3.1.2. Cómo: Mostrar Anuncios desde un Archivo XML mediante el Control AdRotator
7.2.3.1.3. Cómo: Mostrar Anuncios desde una Base de Datos mediante el Control AdRotator
7.2.3.1.4. Cómo: Seleccionar Anuncios en un Control AdRotator mediante Programación
7.2.3.2. Información General sobre BulletedList
7.2.3.2.1. Cómo: Agregar Controles BulletedList a una Página
7.2.3.2.2. Cómo: Responder cuando el Usuario hace Clic en Controles BulletedList
7.2.3.3. Información General sobre Button
7.2.3.3.1. Cómo: Agregar Controles Button a una Página
7.2.3.3.2. Cómo: Agregar Controles ImageButton a una Página
7.2.3.3.3. Cómo: Determinar las Coordenadas de un Control ImageButton
7.2.3.3.4. Cómo: Responder a los Eventos de un Control Button
7.2.3.3.5. Cómo: Responder a los Eventos de un Control Button en una Secuencia de Comandos del Cliente
7.2.3.4. Información General sobre Calendar
7.2.3.4.1. Cómo: Controlar el Desplazamiento por Meses en el Control Calendar
7.2.3.4.2. Cómo: Controlar la Selección de Fecha del Usuario en un Control Calendar
7.2.3.4.3. Cómo: Personalizar la Apariencia del control Calendar
7.2.3.4.4. Cómo: Personalizar Días Aislados en un Control Calendar
7.2.3.4.5. Cómo: Dar Formato mediante Estilos a los Elementos del Control Calendar
7.2.3.4.6. Cómo: Responder a la Selección de Fecha en el Calendar
7.2.3.4.7. Cómo: Leer las Fechas Seleccionadas en Control Calendar
7.2.3.4.8. Cómo: Seleccionar Fechas mediante Programación en un Control Calendar
7.2.3.4.9. Cómo: Establecer la Fecha Actual mediante Programación en un Control Calendar
7.2.3.4.10. Cómo: Mostrar las Fechas Seleccionadas de una Base de Datos en el Control Calendar
7.2.3.5. Información General sobre CheckBox y CheckBoxList
7.2.3.5.1. Cómo: Agregar Controles CheckBox a una Página
7.2.3.5.2. Cómo: Agregar Controles CheckBoxList a una Página
7.2.3.5.3. Cómo: Configurar las Opciones de Diseño de un Control CheckBoxList
7.2.3.5.4. Cómo: Obtener y Establecer el Valor de un Control CheckBox mediante Programación
7.2.3.5.5. Cómo: Responder a la Selección del Usuario en un Control CheckBox
7.2.3.6. Información General sobre DropDownList
7.2.3.6.1. Cómo: Agregar Controles DropDownList a una Página
7.2.3.7. Información General sobre FileUpload
7.2.3.7.1. Cómo: Cargar Archivos con el Control FileUpload
7.2.3.8. Información General sobre HiddenField
7.2.3.9. Información General sobre HyperLink
7.2.3.9.1. Cómo: Agregar Controles HyperLink a una Página
7.2.3.10. Información General sobre Image
7.2.3.10.1. Cómo: Agregar Controles Image a una Página
7.2.3.11. Información General sobre ImageMap
7.2.3.11.1. Cómo: Agregar Controles ImageMap a una Página
7.2.3.11.2. Cómo: Responder Cuando el Usuario hace Clic en Controles ImageMap
7.2.3.12. Información General sobre Label
7.2.3.12.1. Cómo: Agregar Controles Label a una Página
7.2.3.12.2. Cómo: Utilizar controles Label como Títulos
7.2.3.13. Información General sobre ListBox
7.2.3.13.1. Cómo: Agregar Controles ListBox a una Página
7.2.3.13.2. Cómo: Agregar Elementos a Controles List
7.2.3.13.3. Cómo: Establecer la Selección en Controles List
7.2.3.13.4. Cómo: Rellenar Controles List desde un Origen de Datos
7.2.3.13.5. Cómo: Responder a los Cambios en Controles List
7.2.3.13.6. Cómo: Determinar la Selección en Controles List
7.2.3.14. Información General sobre Literal
7.2.3.14.1. Cómo: Agregar Controles Literal a una Página
7.2.3.15. Información General sobre el Control Localize
7.2.3.15.1. Cómo: Agregar Controles Localize a las Páginas
7.2.3.16. Información General sobre MultiView y View
7.2.3.16.1. Cómo: Agregar Controles MultiView a una Página
7.2.3.17. Información General sobre Panel
7.2.3.17.1. Cómo: Agregar Controles Panel a una Página
7.2.3.18. Información General sobre PlaceHolder
7.2.3.18.1. Cómo: Agregar Controles PlaceHolder a una Página
7.2.3.19. Información General sobre RadioButton y RadioButtonList
7.2.3.19.1. Cómo: Agregar Controles RadioButton a una Página
7.2.3.19.2. Cómo: Agregar Controles RadioButtonList a una Página
7.2.3.19.3. Cómo: Establecer y Obtener la Selección de un Control RadioButton
7.2.3.19.4. Cómo: Configurar las Opciones de Diseño de un Control RadioButtonList
7.2.3.19.5. Cómo: Responder a la Selección de un Usuario en un Grupo de Controles RadioButton
7.2.3.20. Información General sobre el Control Substitution
7.2.3.21. Información General sobre los Controles Table, TableRow y TableCell
7.2.3.21.1. Cómo: Agregar Controles Table a una Página
7.2.3.21.2. Cómo: Agregar Filas y Celdas Dinámicamente a un Control Table
7.2.3.22. Información General sobre TextBox
7.2.3.22.1. Cómo: Obtener y Establecer los Valores de los Controles TextBox
7.2.3.22.2. Cómo: Establecer un Control TextBox para Escribir Contraseñas
7.2.3.22.3. Cómo: Especificar la Entrada de Varias Líneas de Datos en un Control TextBox
7.2.3.22.4. Cómo: Responder a los Cambios en un Control TextBox
7.2.3.23. Información General sobre Wizard
7.2.3.23.1. Tutorial: Crear un Control ASP .NET Wizard Básico
7.2.3.23.2. Tutorial: Uso Avanzado del Control Wizard de ASP .NET
7.2.3.24. Información General sobre el Control XML
7.2.3.24.1. Cómo: Agregar Controles XML a una Página
7.2.3.24.2. Cómo: Cargar Datos XML en el Control XML
7.2.3.24.3. Cómo: Transformar Datos XML en el Control XML
7.2.3.24.4. Tutorial: Mostrar un Documento XML en una Página mediante Transformaciones
7.2.3.25. Seguridad de Controles Estándar
7.2.4. Controles de Datos del Cuadro de Herramientas
7.2.4.1. Controles de Servidor Web de Datos
7.2.4.1.1. Información General sobre los Controles Enlazados a Datos
7.2.4.1.2. Información General sobre el Control ListView
7.2.4.1.2.1. Tutorial: Mostrar, Paginar y Ordenar Datos con el Control ListView
7.2.4.1.2.2. Tutorial: Modificar Datos con el Control ListView
7.2.4.1.3. Información General sobre el Control GridView
7.2.4.1.3.1. Comparar los Controles GridView y DataGrid
7.2.4.1.3.2. Ordenar los Datos de un Control GridView
7.2.4.1.3.3. Paginación en un Control GridView
7.2.4.1.3.4. Modificar los Datos de un Control GridView
7.2.4.1.3.5. Eventos del Control GridView
7.2.4.1.3.6. Crear una Columna Personalizada en un Control GridView
7.2.4.1.3.7. Cómo: Establecer Dinámicamente el Ancho de las Columnas en el Control GridView
7.2.4.1.3.8. Cómo: Habilitar la Paginación Predeterminada en el Control GridView
7.2.4.1.3.9. Cómo: Habilitar la Edición Predeterminada en el Control GridView
7.2.4.1.3.10. Cómo: Habilitar la Selección Predeterminada en el Control GridView
7.2.4.1.3.11. Cómo: Habilitar la Eliminación Predeterminada en el Control GridView
7.2.4.1.3.12. Cómo: Personalizar Controles para la Edición en el Control de GridView
7.2.4.1.3.13. Cómo: Responder a Eventos de Botón en un Control GridView
7.2.4.1.3.14. Tutorial: Mostrar una Lista Desplegable mientras se Edita en el Control de GridView
7.2.4.1.3.15. Tutorial: Ordenación Simple del Control GridView
7.2.4.1.3.16. Tutorial: Realizar Actualizaciones Masivas en Filas Enlazadas a un Control GridView
7.2.4.1.3.17. Tutorial: Crear un Control GridView Anidado
7.2.4.1.3.18. Tutorial: Mostrar Datos mediante un Procedimiento Almacenado en el Control GridView
7.2.4.1.4. Información General sobre DetailsView
7.2.4.1.4.1. Paginación en un Control DetailsView
7.2.4.1.4.2. Modificar Datos mediante un Control DetailsView
7.2.4.1.4.3. Crear una Fila Personalizada en un DetailsView
7.2.4.1.4.4. Eventos del Control DetailsView
7.2.4.1.5. Información General sobre FormView
7.2.4.1.5.1. Crear Plantillas para el Control FormView
7.2.4.1.5.2. Paginación en un Control FormView
7.2.4.1.5.3. Modificar Datos mediante un Control FormView
7.2.4.1.5.4. Eventos del Control FormView
7.2.4.1.5.5. Tutorial: Mostrar Datos con Formato en Páginas Web con el Control FormView
7.2.4.1.6. Información General sobre Repeater
7.2.4.1.6.1. Cómo: Agregar Controles Repeater a una Página
7.2.4.1.7. Información General sobre DataList
7.2.4.1.7.1. Cómo: Especificar el Formato de Flujo o Tabla en Controles DataList
7.2.4.1.7.2. Cómo: Especificar la Disposición Horizontal o Vertical en los Controles DataList
7.2.4.1.7.3. Cómo: Permitir que los Usuarios Seleccionen Elementos en los Controles DataList
7.2.4.1.7.4. Cómo: Permitir que los Usuarios Editen Elementos en Controles DataList
7.2.4.1.7.5. Cómo: Permitir a los Usuarios Eliminar Elementos en Controles DataList
7.2.4.1.7.6. Cómo: Responder a los Eventos de Botón en Elementos DataList o Repeater
7.2.4.1.7.7. Cómo: Personalizar Elementos DataList en Tiempo de Ejecución
7.2.4.1.7.8. Cómo: Personalizar Elementos Dinámicamente en el Control DataList
7.2.4.1.7.9. Cómo: Crear Plantillas Dinámicamente en los Controles DataList
7.2.4.1.7.10. Cómo: Agregar Controles DataList a una Página
7.2.4.1.7.11. Tutorial: Mostrar y Dar Formato a Datos con el Control DataList
7.2.4.2. Controles de Servidor Web de Orígenes de Datos
7.2.4.2.1. Información General sobre los Controles de Origen de Datos
7.2.4.2.2. Establecer Enlaces a Datos utilizando un Control de Origen de Datos
7.2.4.2.3. Utilizar Parámetros con Controles de Origen de Datos
7.2.4.2.3.1. Cómo un Control de Origen de Datos Crea Parámetros para Campos Enlazados a Datos
7.2.4.2.4. Ordenar Datos con Controles de Origen de Datos
7.2.4.2.5. Modificar Datos mediante Controles de Origen de Datos
7.2.4.2.6. Filtrar Datos utilizando Controles de Origen de Datos
7.2.4.2.7. Almacenar Datos en Memoria Caché utilizando Controles de Origen de Datos
7.2.4.2.8. Controlar Valores Null de Base de Datos mediante Controles de Origen de Datos
7.2.4.2.9. Información General sobre el Control LinqDataSource
7.2.4.2.9.1. Tutorial: Recuperar, Actualizar, Insertar y Eliminar Datos con los Controles LinqDataSource y DetailsView
7.2.4.2.9.2. Tutorial: Seleccionar y Filtrar un Subconjunto de Datos con los Controles LinqDataSource y GridView
7.2.4.2.9.3. Tutorial: Usar una Marca de Tiempo con el Control LinqDataSource para Comprobar la Integridad de los Datos
7.2.4.2.9.4. Cómo: Agrupar y Agregar Datos utilizando el Control LinqDataSource
7.2.4.2.9.5. Cómo: Actualizar, Insertar y Eliminar Datos con el Control LinqDataSource
7.2.4.2.10. Información General sobre SqlDataSource
7.2.4.2.10.1. Seleccionar Datos mediante el Control SqlDataSource
7.2.4.2.10.2. Utilizar Parámetros con el Control SqlDataSource
7.2.4.2.10.3. Modificar Datos mediante el Control SqlDataSource
7.2.4.2.10.4. Almacenar Datos en Caché con el Control SqlDataSource
7.2.4.2.10.5. Cómo: Habilitar el Filtrado para el Control SqlDataSource
7.2.4.2.10.6. Cómo: Conectar con una Base de Datos de SQL Server mediante el Control SqlDataSource
7.2.4.2.10.7. Cómo: Conectar con una Base de Datos de Access mediante el Control SqlDataSource
7.2.4.2.10.8. Cómo: Conectar con una Base de Datos ODBC mediante el Control SqlDataSource
7.2.4.2.10.9. Cómo: Conectar con una Base de Datos de Oracle mediante el Control SqlDataSource
7.2.4.2.11. Información General sobre el Control AccessDataSource
7.2.4.2.11.1. Recuperar Datos utilizando el Control AccessDataSource
7.2.4.2.11.2. Cómo: Conectar con una Base de Datos de Access mediante el Control AccessDataSource
7.2.4.2.12. Información General sobre el Control ObjectDataSource
7.2.4.2.12.1. Utilizar Parámetros con el Control ObjectDataSource
7.2.4.2.12.2. Tutorial: Enlace de Datos en Páginas Web con un Componente de Datos
7.2.4.2.12.3. Crear un Objeto de Origen para un Control ObjectDataSource
7.2.4.2.12.3.1. Ejemplo de Objeto de Origen ObjectDataSource
7.2.4.2.12.3.2. Ejemplo de ObjectDataSource con Establecimiento Inflexible de Tipos
7.2.4.2.13. Información General sobre el Control XmlDataSource
7.2.4.2.13.1. Filtrar Datos mediante el Control XmlDataSource
7.2.4.2.13.2. Enlazar un Control Tabular con XmlDataSource
7.2.4.2.13.3. Tutorial: Crear una Página Web para Mostrar Datos XML
7.2.4.2.14. Información General sobre SiteMapDataSource
Descarga
Manual_Visual_Web_Developer_Parte2
Titulo: Manual de Visual Web Developer Parte 2
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2008
Número de Páginas: 473
Indice del Manual de Visual Web Developer (Parte 2)
6. Introducción a la Infraestructura de ASP .NET
6.1. Información General sobre Controladores HTTP y Módulos HTTP
6.1.1. Cómo: Registrar Controladores HTTP
6.1.2. Cómo: Configurar una Extensión de Controlador HTTP en IIS
6.1.3. Tutorial: Crear un Controlador HTTP Sincrónico
6.1.4. Cómo: Crear un Controlador HTTP Asincrónico
6.1.5. Tutorial: Crear y Registrar Generadores de Controladores http
6.1.6. Tutorial: Crear y Registrar un Módulo HTTP Personalizado
6.2. Información General sobre la Administración de Estados de ASP .NET
6.2.1. Información General sobre las Cookies en ASP .NET
6.2.1.1. Cómo: Escribir una Cookie
6.2.1.2. Cómo: Leer una Cookie
6.2.1.3. Cómo: Eliminar una Cookie
6.2.2. Información General sobre el Estado de Vista en ASP .NET
6.2.3. Información General sobre el Estado de Sesión de ASP .NET
6.2.3.1. Identificadores de Sesión
6.2.3.2. Eventos de Estado de Sesión
6.2.3.3. Modos de Estado de Sesión
6.2.3.4. Proteger el Estado de Sesión
6.2.3.5. Cómo: Guardar Valores en un Estado de Sesión
6.2.3.6. Cómo: Leer los Valores de un Estado de Sesión
6.2.3.7. Implementar un Proveedor de Almacén de Estados de Sesión
6.2.4. Información General sobre el Estado de Aplicación de ASP .NET
6.2.4.1. Cómo: Guardar Valores en un Estado de Aplicación
6.2.4.2. Cómo: Leer los Valores de un Estado de Aplicación
6.2.5. Información General sobre las Propiedades de Perfil de ASP .NET
6.2.5.1. Identificación de Usuario para las Propiedades de Perfil de ASP .NET
6.2.5.2. Definición de las Propiedades de Perfil ASP .NET
6.2.5.3. Proveedores de Perfiles de ASP .NET
6.2.5.4. Proteger las Propiedades de Perfil
6.2.5.5. Tutorial: Mantener la Información de Usuarios de Sitios Web con Propiedades de Perfil
6.2.5.6. Usar Información de Perfiles con AJAX en ASP .NET
6.2.5.7. Implementar un Proveedor de Perfiles
6.2.5.8. Información General sobre el Servicio de Perfiles de WCF
6.2.5.8.1. Cómo: Habilitar el Servicio de Perfiles de WCF
6.2.6. Recomendaciones de Administración de Estado de ASP .NET
6.3. Enrutamiento de ASP .NET
6.3.1. Cómo: Definir una Ruta
6.3.2. Cómo: Crear una Dirección URL a partir de una Ruta
6.3.3. Cómo: Utilizar el Enrutamiento con Formularios Web
7. Utilizar Controles de ASP .NET
7.1. Controles de Usuario ASP .NET
7.1.1. Información General sobre los Controles de Usuario ASP .NET
7.1.2. Cómo: Convertir Páginas de Formularios Web Forms en Controles de Usuario
7.1.3. Cómo: Incluir un Control de Usuario en una Página Web ASP .NET
7.1.4. Cómo: Crear Instancias de Controles de Usuario ASP .NET mediante Programación
7.1.5. Cómo: Crear Controles de Usuario ASP .NET con Plantillas
7.1.6. Cómo: Crear Controles de Usuario ASP .NET
7.1.7. Cómo: Incluir Controles de Usuario ASP .NET en Páginas Web
7.1.8. Tutorial: Crear Elementos Reutilizables con Controles Usuario ASP .NET
7.2. Controles de Servidor ASP .NET
7.2.1. Información General sobre los Controles de Servidor Web ASP .NET
7.2.1.1. Cómo: Agregar Controles de Servidor Web a una Página de Formularios Web Forms mediante el Diseñador de Web Forms
7.2.1.1.1. Cómo: Agregar Controles de Servidor a una Página Web ASP .NET mediante la Sintaxis de ASP .NET
7.2.1.2. Cómo: Crear Plantillas de Controles de Servidor Web mediante el Diseñador
7.2.1.3. Cómo: Establecer las Propiedades de Estilo de un Control de Servidor ASP .NET en el Diseñador
7.2.1.4. Cómo: Establecer Propiedades de un Control de Servidor ASP .NET
7.2.2. Trabajar con Controles de Servidor Web ASP .NET
7.2.2.1. Cómo: Agregar Controles de Servidor a una Página Web ASP .NET mediante la Sintaxis de ASP .NET
7.2.2.2. Agregar Controles de Servidor HTML a una Página Web ASP .NET
7.2.2.2.1. Cómo: Agregar Controles de Servidor HTML a una Página Web mediante la Sintaxis de ASP .NET
7.2.2.2.2. Cómo: Convertir Controles de Servidor HTML en Elementos HTML
7.2.2.3. Cómo: Especificar si los Controles de Servidor Web ASP .NET se Publican en el Servidor
7.2.2.4. Controles de Servidor Web y Funciones del Explorador
7.2.2.4.1. Proteger Archivos de Definición de Explorador
7.2.2.5. Orden de Tabulación, Foco y Claves de Acceso en los Controles de Servidor Web de ASP .NET
7.2.2.5.1. Cómo: Establecer el Foco en los Controles de Servidor Web
7.2.2.5.2. Cómo: Establecer Teclas de Acceso para los Controles de Servidor Web
7.2.2.6. Controles de Servidor Web ASP .NET y Estilos de CSS
7.2.2.6.1. Cómo: Establecer Propiedades de Estilo de un Control de Servidor ASP .NET mediante Sintaxis de ASP .NET
7.2.2.6.2. Cómo: Establecer Propiedades de Estilo de un Control de Servidor ASP .NET mediante Programación
7.2.2.7. Plantillas de Controles de Servidor Web ASP .NET
7.2.2.7.1. Cómo: Crear Plantillas de Controles Web ASP .NET mediante Declaración
7.2.2.7.2. Cómo: Responder a Eventos Button en Controles Enlazados a Datos
7.2.2.7.3. Cómo: Crear Plantillas de Controles de Servidor Web ASP .NET Dinámicamente
7.2.2.8. Agregar Controles ASP .NET mediante Programación
7.2.2.8.1. Cómo: Agregar Controles a una Página Web ASP .NET mediante Programación
7.2.2.8.2. Controles de Servidor Web Dinámicos y Estado de Vista
7.2.2.9. Obtener Acceso a Controles ASP .NET mediante Programación
7.2.2.9.1. Identificación de Controles de Formularios Web Forms
7.2.2.9.2. Resolución del Identificador de un Control de Formularios Web Forms
7.2.2.9.3. Cómo: Localizar Controles Secundarios por Id en una Página Web
7.2.2.9.4. Utilizar una Colección de Controles en una Página Web
7.2.2.9.5. Cómo: Buscar Controles de Formularios Web Forms en una Página recorriendo la Colección Controls
7.2.2.9.6. Utilizar la Propiedad NamingContainer para Determinar el Contenedor de Nombres de un Control
7.2.2.9.7. Cómo: Obtener Acceso a Miembros de un Contenedor de Nombres de un Control de Servidor Web
7.2.3. Controles Estándar del Cuadro de Herramientas
7.2.3.1. Información General sobre AdRotator
7.2.3.1.1. Tutorial: Mostrar y Realizar un Seguimiento de los Anuncios con el Control AdRotator
7.2.3.1.2. Cómo: Mostrar Anuncios desde un Archivo XML mediante el Control AdRotator
7.2.3.1.3. Cómo: Mostrar Anuncios desde una Base de Datos mediante el Control AdRotator
7.2.3.1.4. Cómo: Seleccionar Anuncios en un Control AdRotator mediante Programación
7.2.3.2. Información General sobre BulletedList
7.2.3.2.1. Cómo: Agregar Controles BulletedList a una Página
7.2.3.2.2. Cómo: Responder cuando el Usuario hace Clic en Controles BulletedList
7.2.3.3. Información General sobre Button
7.2.3.3.1. Cómo: Agregar Controles Button a una Página
7.2.3.3.2. Cómo: Agregar Controles ImageButton a una Página
7.2.3.3.3. Cómo: Determinar las Coordenadas de un Control ImageButton
7.2.3.3.4. Cómo: Responder a los Eventos de un Control Button
7.2.3.3.5. Cómo: Responder a los Eventos de un Control Button en una Secuencia de Comandos del Cliente
7.2.3.4. Información General sobre Calendar
7.2.3.4.1. Cómo: Controlar el Desplazamiento por Meses en el Control Calendar
7.2.3.4.2. Cómo: Controlar la Selección de Fecha del Usuario en un Control Calendar
7.2.3.4.3. Cómo: Personalizar la Apariencia del control Calendar
7.2.3.4.4. Cómo: Personalizar Días Aislados en un Control Calendar
7.2.3.4.5. Cómo: Dar Formato mediante Estilos a los Elementos del Control Calendar
7.2.3.4.6. Cómo: Responder a la Selección de Fecha en el Calendar
7.2.3.4.7. Cómo: Leer las Fechas Seleccionadas en Control Calendar
7.2.3.4.8. Cómo: Seleccionar Fechas mediante Programación en un Control Calendar
7.2.3.4.9. Cómo: Establecer la Fecha Actual mediante Programación en un Control Calendar
7.2.3.4.10. Cómo: Mostrar las Fechas Seleccionadas de una Base de Datos en el Control Calendar
7.2.3.5. Información General sobre CheckBox y CheckBoxList
7.2.3.5.1. Cómo: Agregar Controles CheckBox a una Página
7.2.3.5.2. Cómo: Agregar Controles CheckBoxList a una Página
7.2.3.5.3. Cómo: Configurar las Opciones de Diseño de un Control CheckBoxList
7.2.3.5.4. Cómo: Obtener y Establecer el Valor de un Control CheckBox mediante Programación
7.2.3.5.5. Cómo: Responder a la Selección del Usuario en un Control CheckBox
7.2.3.6. Información General sobre DropDownList
7.2.3.6.1. Cómo: Agregar Controles DropDownList a una Página
7.2.3.7. Información General sobre FileUpload
7.2.3.7.1. Cómo: Cargar Archivos con el Control FileUpload
7.2.3.8. Información General sobre HiddenField
7.2.3.9. Información General sobre HyperLink
7.2.3.9.1. Cómo: Agregar Controles HyperLink a una Página
7.2.3.10. Información General sobre Image
7.2.3.10.1. Cómo: Agregar Controles Image a una Página
7.2.3.11. Información General sobre ImageMap
7.2.3.11.1. Cómo: Agregar Controles ImageMap a una Página
7.2.3.11.2. Cómo: Responder Cuando el Usuario hace Clic en Controles ImageMap
7.2.3.12. Información General sobre Label
7.2.3.12.1. Cómo: Agregar Controles Label a una Página
7.2.3.12.2. Cómo: Utilizar controles Label como Títulos
7.2.3.13. Información General sobre ListBox
7.2.3.13.1. Cómo: Agregar Controles ListBox a una Página
7.2.3.13.2. Cómo: Agregar Elementos a Controles List
7.2.3.13.3. Cómo: Establecer la Selección en Controles List
7.2.3.13.4. Cómo: Rellenar Controles List desde un Origen de Datos
7.2.3.13.5. Cómo: Responder a los Cambios en Controles List
7.2.3.13.6. Cómo: Determinar la Selección en Controles List
7.2.3.14. Información General sobre Literal
7.2.3.14.1. Cómo: Agregar Controles Literal a una Página
7.2.3.15. Información General sobre el Control Localize
7.2.3.15.1. Cómo: Agregar Controles Localize a las Páginas
7.2.3.16. Información General sobre MultiView y View
7.2.3.16.1. Cómo: Agregar Controles MultiView a una Página
7.2.3.17. Información General sobre Panel
7.2.3.17.1. Cómo: Agregar Controles Panel a una Página
7.2.3.18. Información General sobre PlaceHolder
7.2.3.18.1. Cómo: Agregar Controles PlaceHolder a una Página
7.2.3.19. Información General sobre RadioButton y RadioButtonList
7.2.3.19.1. Cómo: Agregar Controles RadioButton a una Página
7.2.3.19.2. Cómo: Agregar Controles RadioButtonList a una Página
7.2.3.19.3. Cómo: Establecer y Obtener la Selección de un Control RadioButton
7.2.3.19.4. Cómo: Configurar las Opciones de Diseño de un Control RadioButtonList
7.2.3.19.5. Cómo: Responder a la Selección de un Usuario en un Grupo de Controles RadioButton
7.2.3.20. Información General sobre el Control Substitution
7.2.3.21. Información General sobre los Controles Table, TableRow y TableCell
7.2.3.21.1. Cómo: Agregar Controles Table a una Página
7.2.3.21.2. Cómo: Agregar Filas y Celdas Dinámicamente a un Control Table
7.2.3.22. Información General sobre TextBox
7.2.3.22.1. Cómo: Obtener y Establecer los Valores de los Controles TextBox
7.2.3.22.2. Cómo: Establecer un Control TextBox para Escribir Contraseñas
7.2.3.22.3. Cómo: Especificar la Entrada de Varias Líneas de Datos en un Control TextBox
7.2.3.22.4. Cómo: Responder a los Cambios en un Control TextBox
7.2.3.23. Información General sobre Wizard
7.2.3.23.1. Tutorial: Crear un Control ASP .NET Wizard Básico
7.2.3.23.2. Tutorial: Uso Avanzado del Control Wizard de ASP .NET
7.2.3.24. Información General sobre el Control XML
7.2.3.24.1. Cómo: Agregar Controles XML a una Página
7.2.3.24.2. Cómo: Cargar Datos XML en el Control XML
7.2.3.24.3. Cómo: Transformar Datos XML en el Control XML
7.2.3.24.4. Tutorial: Mostrar un Documento XML en una Página mediante Transformaciones
7.2.3.25. Seguridad de Controles Estándar
7.2.4. Controles de Datos del Cuadro de Herramientas
7.2.4.1. Controles de Servidor Web de Datos
7.2.4.1.1. Información General sobre los Controles Enlazados a Datos
7.2.4.1.2. Información General sobre el Control ListView
7.2.4.1.2.1. Tutorial: Mostrar, Paginar y Ordenar Datos con el Control ListView
7.2.4.1.2.2. Tutorial: Modificar Datos con el Control ListView
7.2.4.1.3. Información General sobre el Control GridView
7.2.4.1.3.1. Comparar los Controles GridView y DataGrid
7.2.4.1.3.2. Ordenar los Datos de un Control GridView
7.2.4.1.3.3. Paginación en un Control GridView
7.2.4.1.3.4. Modificar los Datos de un Control GridView
7.2.4.1.3.5. Eventos del Control GridView
7.2.4.1.3.6. Crear una Columna Personalizada en un Control GridView
7.2.4.1.3.7. Cómo: Establecer Dinámicamente el Ancho de las Columnas en el Control GridView
7.2.4.1.3.8. Cómo: Habilitar la Paginación Predeterminada en el Control GridView
7.2.4.1.3.9. Cómo: Habilitar la Edición Predeterminada en el Control GridView
7.2.4.1.3.10. Cómo: Habilitar la Selección Predeterminada en el Control GridView
7.2.4.1.3.11. Cómo: Habilitar la Eliminación Predeterminada en el Control GridView
7.2.4.1.3.12. Cómo: Personalizar Controles para la Edición en el Control de GridView
7.2.4.1.3.13. Cómo: Responder a Eventos de Botón en un Control GridView
7.2.4.1.3.14. Tutorial: Mostrar una Lista Desplegable mientras se Edita en el Control de GridView
7.2.4.1.3.15. Tutorial: Ordenación Simple del Control GridView
7.2.4.1.3.16. Tutorial: Realizar Actualizaciones Masivas en Filas Enlazadas a un Control GridView
7.2.4.1.3.17. Tutorial: Crear un Control GridView Anidado
7.2.4.1.3.18. Tutorial: Mostrar Datos mediante un Procedimiento Almacenado en el Control GridView
7.2.4.1.4. Información General sobre DetailsView
7.2.4.1.4.1. Paginación en un Control DetailsView
7.2.4.1.4.2. Modificar Datos mediante un Control DetailsView
7.2.4.1.4.3. Crear una Fila Personalizada en un DetailsView
7.2.4.1.4.4. Eventos del Control DetailsView
7.2.4.1.5. Información General sobre FormView
7.2.4.1.5.1. Crear Plantillas para el Control FormView
7.2.4.1.5.2. Paginación en un Control FormView
7.2.4.1.5.3. Modificar Datos mediante un Control FormView
7.2.4.1.5.4. Eventos del Control FormView
7.2.4.1.5.5. Tutorial: Mostrar Datos con Formato en Páginas Web con el Control FormView
7.2.4.1.6. Información General sobre Repeater
7.2.4.1.6.1. Cómo: Agregar Controles Repeater a una Página
7.2.4.1.7. Información General sobre DataList
7.2.4.1.7.1. Cómo: Especificar el Formato de Flujo o Tabla en Controles DataList
7.2.4.1.7.2. Cómo: Especificar la Disposición Horizontal o Vertical en los Controles DataList
7.2.4.1.7.3. Cómo: Permitir que los Usuarios Seleccionen Elementos en los Controles DataList
7.2.4.1.7.4. Cómo: Permitir que los Usuarios Editen Elementos en Controles DataList
7.2.4.1.7.5. Cómo: Permitir a los Usuarios Eliminar Elementos en Controles DataList
7.2.4.1.7.6. Cómo: Responder a los Eventos de Botón en Elementos DataList o Repeater
7.2.4.1.7.7. Cómo: Personalizar Elementos DataList en Tiempo de Ejecución
7.2.4.1.7.8. Cómo: Personalizar Elementos Dinámicamente en el Control DataList
7.2.4.1.7.9. Cómo: Crear Plantillas Dinámicamente en los Controles DataList
7.2.4.1.7.10. Cómo: Agregar Controles DataList a una Página
7.2.4.1.7.11. Tutorial: Mostrar y Dar Formato a Datos con el Control DataList
7.2.4.2. Controles de Servidor Web de Orígenes de Datos
7.2.4.2.1. Información General sobre los Controles de Origen de Datos
7.2.4.2.2. Establecer Enlaces a Datos utilizando un Control de Origen de Datos
7.2.4.2.3. Utilizar Parámetros con Controles de Origen de Datos
7.2.4.2.3.1. Cómo un Control de Origen de Datos Crea Parámetros para Campos Enlazados a Datos
7.2.4.2.4. Ordenar Datos con Controles de Origen de Datos
7.2.4.2.5. Modificar Datos mediante Controles de Origen de Datos
7.2.4.2.6. Filtrar Datos utilizando Controles de Origen de Datos
7.2.4.2.7. Almacenar Datos en Memoria Caché utilizando Controles de Origen de Datos
7.2.4.2.8. Controlar Valores Null de Base de Datos mediante Controles de Origen de Datos
7.2.4.2.9. Información General sobre el Control LinqDataSource
7.2.4.2.9.1. Tutorial: Recuperar, Actualizar, Insertar y Eliminar Datos con los Controles LinqDataSource y DetailsView
7.2.4.2.9.2. Tutorial: Seleccionar y Filtrar un Subconjunto de Datos con los Controles LinqDataSource y GridView
7.2.4.2.9.3. Tutorial: Usar una Marca de Tiempo con el Control LinqDataSource para Comprobar la Integridad de los Datos
7.2.4.2.9.4. Cómo: Agrupar y Agregar Datos utilizando el Control LinqDataSource
7.2.4.2.9.5. Cómo: Actualizar, Insertar y Eliminar Datos con el Control LinqDataSource
7.2.4.2.10. Información General sobre SqlDataSource
7.2.4.2.10.1. Seleccionar Datos mediante el Control SqlDataSource
7.2.4.2.10.2. Utilizar Parámetros con el Control SqlDataSource
7.2.4.2.10.3. Modificar Datos mediante el Control SqlDataSource
7.2.4.2.10.4. Almacenar Datos en Caché con el Control SqlDataSource
7.2.4.2.10.5. Cómo: Habilitar el Filtrado para el Control SqlDataSource
7.2.4.2.10.6. Cómo: Conectar con una Base de Datos de SQL Server mediante el Control SqlDataSource
7.2.4.2.10.7. Cómo: Conectar con una Base de Datos de Access mediante el Control SqlDataSource
7.2.4.2.10.8. Cómo: Conectar con una Base de Datos ODBC mediante el Control SqlDataSource
7.2.4.2.10.9. Cómo: Conectar con una Base de Datos de Oracle mediante el Control SqlDataSource
7.2.4.2.11. Información General sobre el Control AccessDataSource
7.2.4.2.11.1. Recuperar Datos utilizando el Control AccessDataSource
7.2.4.2.11.2. Cómo: Conectar con una Base de Datos de Access mediante el Control AccessDataSource
7.2.4.2.12. Información General sobre el Control ObjectDataSource
7.2.4.2.12.1. Utilizar Parámetros con el Control ObjectDataSource
7.2.4.2.12.2. Tutorial: Enlace de Datos en Páginas Web con un Componente de Datos
7.2.4.2.12.3. Crear un Objeto de Origen para un Control ObjectDataSource
7.2.4.2.12.3.1. Ejemplo de Objeto de Origen ObjectDataSource
7.2.4.2.12.3.2. Ejemplo de ObjectDataSource con Establecimiento Inflexible de Tipos
7.2.4.2.13. Información General sobre el Control XmlDataSource
7.2.4.2.13.1. Filtrar Datos mediante el Control XmlDataSource
7.2.4.2.13.2. Enlazar un Control Tabular con XmlDataSource
7.2.4.2.13.3. Tutorial: Crear una Página Web para Mostrar Datos XML
7.2.4.2.14. Información General sobre SiteMapDataSource
Descarga
Manual_Visual_Web_Developer_Parte2
Etiquetas:
AJAX,
ASP.NET,
Controladores,
Controles,
Cookies,
Enrutamiento,
GridView,
HTTP,
Lduenas,
Manual,
Módulos,
MSDN,
Perfiles,
Plantillas,
Sesión,
Vista,
WCF,
Web Developer,
Web Forms,
XML
miércoles, 6 de enero de 2016
Entrenamiento - Vacantes para el Curso de Desarrollo Web de los Domingos
Vacantes para el Curso de Desarrollo Web de los Domingos
Estimados alumnos, este Domingo 10 de Enero iniciamos el segundo mes del curso de Desarrollo Web Desconectado Total usando JavaScript, HTML5 y CSS3 (80% de código cliente y 20% código servidor aproximadamente).
Hay 10 nuevas vacantes para cubrir el total de la capacidad y los interesados solo deben un mail de confirmación a Luis.duenash@gmail.com con su Nombre Completo y si ha sido ex-alumno o no. El costo del curso es de 200 soles por 4 sesiones de 6 horas, es decir 24 horas.
El horario son los Domingos de 8:00 am a 2:00 pm y se realiza en el cono Norte, la dirección exacta será enviada por mail a los confirmados. Los interesados tener en cuenta el lugar y que no es curso tradicional, no se dará certificados, diplomas, recibos, etc.
Los que asisten a mis cursos y talleres saben que cada semana tenemos temas muy interesantes que tratamos que serán la base del desarrollo web moderno: desconectado total y nativo, dando énfasis a las APIs de JavaScript y creando código óptimo.
Muchos han estado preguntando sobre cursos y les he dicho que ya no dicto regularmente, excepto este curso de los Domingos, y los que alguna vez ya llevaron conmigo los temas son totalmente distintos, además hay mucha teoría sobre cómo funciona Internet, el Navegador, .NET Framework, etc.
Recuerden que solo se registrará a los 10 primeros y de preferencia a ex-alumnos. Aprovechen que el costo del curso es muy bajo comparado con lo que se cobra en la mayoría de centros de capacitación por no aprender nada que solucione los problemas de la computación.
Sea lo que sea que te enseñen: C#, LINQ, Entity Framework, CodeFirst, AngularJS, KnockoutJS, jQuery, AJAX, Ember.JS, etc. te darás cuenta que los problemas de lentitud seguirán, y si apuestas por el Hardware aumentando mas disco, CPU, memoria, etc, tampoco dará resultados.
La solución completa es la que vemos en estos talleres y muchos alumnos ya están poniendo en práctica esta nueva forma de programar que es rápida en desarrollo y mas rápida en ejecución. Los visitantes de mi Blog y de mi canal de YouTube tienen que tener en cuenta que la mayoría de los Demos y Videos no son posteados, solo está accesible para los que siguen el curso.
Saludos
Estimados alumnos, este Domingo 10 de Enero iniciamos el segundo mes del curso de Desarrollo Web Desconectado Total usando JavaScript, HTML5 y CSS3 (80% de código cliente y 20% código servidor aproximadamente).
Hay 10 nuevas vacantes para cubrir el total de la capacidad y los interesados solo deben un mail de confirmación a Luis.duenash@gmail.com con su Nombre Completo y si ha sido ex-alumno o no. El costo del curso es de 200 soles por 4 sesiones de 6 horas, es decir 24 horas.
El horario son los Domingos de 8:00 am a 2:00 pm y se realiza en el cono Norte, la dirección exacta será enviada por mail a los confirmados. Los interesados tener en cuenta el lugar y que no es curso tradicional, no se dará certificados, diplomas, recibos, etc.
Los que asisten a mis cursos y talleres saben que cada semana tenemos temas muy interesantes que tratamos que serán la base del desarrollo web moderno: desconectado total y nativo, dando énfasis a las APIs de JavaScript y creando código óptimo.
Muchos han estado preguntando sobre cursos y les he dicho que ya no dicto regularmente, excepto este curso de los Domingos, y los que alguna vez ya llevaron conmigo los temas son totalmente distintos, además hay mucha teoría sobre cómo funciona Internet, el Navegador, .NET Framework, etc.
Recuerden que solo se registrará a los 10 primeros y de preferencia a ex-alumnos. Aprovechen que el costo del curso es muy bajo comparado con lo que se cobra en la mayoría de centros de capacitación por no aprender nada que solucione los problemas de la computación.
Sea lo que sea que te enseñen: C#, LINQ, Entity Framework, CodeFirst, AngularJS, KnockoutJS, jQuery, AJAX, Ember.JS, etc. te darás cuenta que los problemas de lentitud seguirán, y si apuestas por el Hardware aumentando mas disco, CPU, memoria, etc, tampoco dará resultados.
La solución completa es la que vemos en estos talleres y muchos alumnos ya están poniendo en práctica esta nueva forma de programar que es rápida en desarrollo y mas rápida en ejecución. Los visitantes de mi Blog y de mi canal de YouTube tienen que tener en cuenta que la mayoría de los Demos y Videos no son posteados, solo está accesible para los que siguen el curso.
Saludos
Etiquetas:
ADO.NET,
AJAX,
AngularJS,
APIs,
ASP.NET,
C#,
CodeFirst,
CSS3,
Cursos,
Desconectado,
Ember,
Entrenamiento,
HTML5,
Javascript,
jQuery,
Knockout,
Lduenas,
LINQ,
MVC,
Web Forms
miércoles, 15 de julio de 2015
El Libro del Día: Pro HTML5 with Visual Studio 2015
El Libro del Día: 2015-07-15
Titulo: Pro HTML5 with Visual Studio 2015
Autor: Mark J. Collins
Editorial: Apress
Nro Paginas: 435
Capítulos:
Part I: What is HTML5
Chapter 1: Before You Begin
Part II: Using the New HTML5 Features
Chapter 2: ASP.NET Web Forms
Chapter 3: MVC Web Applications
Chapter 4: Cascading Style Sheets
Chapter 5: Scripting Enhancements
Chapter 6: Mobile Web Applications
Part III: Digging Deeper
Chapter 7: Supporting Older Browsers
Chapter 8: Audio and Video
Chapter 9: Scalable Vector Graphics
Chapter 10: Canvas
Part IV: Advanced Features
Chapter 11: Indexed DB
Chapter 12: Geolocation and Mapping
Chapter 13: WebSockets
Chapter 14: Drag and Drop
Part V: Appendixes
Appendix A: Sample Content for Chapter 4
Appendix B: Completed Style for Chapter 4
Appendix C: Final Code for Chapter 14
Descarga:
Pro_HTML5_with_Visual_Studio_2015
Titulo: Pro HTML5 with Visual Studio 2015
Autor: Mark J. Collins
Editorial: Apress
Nro Paginas: 435
Capítulos:
Part I: What is HTML5
Chapter 1: Before You Begin
Part II: Using the New HTML5 Features
Chapter 2: ASP.NET Web Forms
Chapter 3: MVC Web Applications
Chapter 4: Cascading Style Sheets
Chapter 5: Scripting Enhancements
Chapter 6: Mobile Web Applications
Part III: Digging Deeper
Chapter 7: Supporting Older Browsers
Chapter 8: Audio and Video
Chapter 9: Scalable Vector Graphics
Chapter 10: Canvas
Part IV: Advanced Features
Chapter 11: Indexed DB
Chapter 12: Geolocation and Mapping
Chapter 13: WebSockets
Chapter 14: Drag and Drop
Part V: Appendixes
Appendix A: Sample Content for Chapter 4
Appendix B: Completed Style for Chapter 4
Appendix C: Final Code for Chapter 14
Descarga:
Pro_HTML5_with_Visual_Studio_2015
Etiquetas:
Apress,
ASP.NET,
Audio,
Browsers,
Canvas,
CSS,
D&D,
Geolocation,
HTML5,
Indexed DB,
Libros,
Mark J. Collins,
Mobile Web,
MVC,
Scripting,
SVG,
Video,
VS2015,
Web Forms,
WebSockets
martes, 4 de noviembre de 2014
El Demo del Día: Paginación en un GridView con Columna de CheckBoxs
Paginación en un GridView con Columna de CheckBoxs
Después de mas de 2 meses retomamos los posts de ASP .NET WebForms, en esta ocasión publicaré un caso práctico muy útil.
Requerimiento
Se desea listar registros en forma paginada usando el GridView pero mostrando una columna con Checks que permita seleccionar los registros para un uso posterior como grabar datos en el servidor.
Problema
Si creamos una grilla sin paginar con una columna de tipo CheckBox no hay problemas, pero si paginamos, al seleccionar los checks de una pagina y cambiar de pagina se perderán debido a que la grilla siempre se tiene que enlazar nuevamente para mostrar la pagina seleccionada.
Solución
Para solucionar el problema debemos enlazar la columna checkbox a una propiedad de la entidad del negocio de tipo boolean, luego debemos almacenar el valor seleccionado, lo cual se puede hacer de 2 formas:
1. Guardar el valor cada vez que se selecciona el check, ya sea para marcar o desmarcar.
2. Guardar los valores seleccionados al regresar al servidor ya sea al cambiar de página o al hacer PostBack mediante algún botón.
Definitivamente, la mejor opción es la segunda, es decir, cada vez que ocurra un Postback guardaremos los checks seleccionados de la pagina actual.
Crear el Procedimiento Almacenado en la Base de Datos de SQL Server
Create Procedure uspProductsListar
As
Select ProductID,ProductName,SupplierID,CategoryID,UnitPrice,UnitsInStock
From Products
Crear la Aplicación Web en ASP .NET Web Form
Crear un "Nuevo Sitio web vacío de ASP .NET" en C# llamado "GridView_Paginado_Checks".
Para simplificar el Demo no he creado librerías de clases y las clases las he incluido dentro de la aplicación Web.
Crear la Clase Entidad del Negocio
Crear la clase beProducto escribiendo el siguiente código:
using System;
namespace GridView_Paginado_Checks
{
public class beProducto
{
public bool Seleccion { get; set; }
public int IdProducto { get; set; }
public string Nombre { get; set; }
public int IdProveedor { get; set; }
public int IdCategoria { get; set; }
public decimal PrecioUnitario { get; set; }
public short Stock { get; set; }
}
}
Nota: La propiedad Seleccion es la que se va a enlazar al check para guardar el valor seleccionado.
Crear la Clase de Acceso a Datos
Crear la clase daProducto escribiendo el siguiente código:
using System;
using System.Data; //CommadType
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using System.Collections.Generic; //List
namespace GridView_Paginado_Checks
{
public class daProducto
{
public List<beProducto> listar(SqlConnection con)
{
List<beProducto> lbeProducto = null;
SqlCommand cmd = new SqlCommand("uspProductsListar", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
if (drd != null)
{
lbeProducto = new List<beProducto>();
int posIdProducto = drd.GetOrdinal("ProductID");
int posNombre = drd.GetOrdinal("ProductName");
int posIdProveedor = drd.GetOrdinal("SupplierID");
int posIdCategoria = drd.GetOrdinal("CategoryID");
int posPrecioUnitario = drd.GetOrdinal("UnitPrice");
int posStock = drd.GetOrdinal("UnitsInStock");
beProducto obeProducto;
while (drd.Read())
{
obeProducto = new beProducto();
obeProducto.IdProducto = drd.GetInt32(posIdProducto);
obeProducto.Nombre = drd.GetString(posNombre);
obeProducto.IdProveedor = drd.GetInt32(posIdProveedor);
obeProducto.IdCategoria = drd.GetInt32(posIdCategoria);
obeProducto.PrecioUnitario = drd.GetDecimal(posPrecioUnitario);
obeProducto.Stock = drd.GetInt16(posStock);
lbeProducto.Add(obeProducto);
}
drd.Close();
}
return (lbeProducto);
}
}
}
Nota: Tiene que haberse creado el Procedimiento Almacenado "uspProductsListar" en la BD Northwind.
Crear la Clase de Reglas del Negocio
Crear la clase brProducto escribiendo el siguiente código:
using System;
using System.Collections.Generic; //List
using System.Data.SqlClient; //SqlConnection
using System.Configuration; //ConfigurationManager
namespace GridView_Paginado_Checks
{
public class brProducto
{
public List<beProducto> listar()
{
List<beProducto> lbeProducto = null;
string conexion = ConfigurationManager.ConnectionStrings["conNW"].ConnectionString;
using (SqlConnection con = new SqlConnection(conexion))
{
try
{
con.Open();
daProducto odaProducto = new daProducto();
lbeProducto = odaProducto.listar(con);
}
catch (SqlException ex)
{
foreach (SqlError err in ex.Errors)
{
//Capturar cada error y grabar un Log
}
}
} //con.Close(); con.Dispose(); con = null;
return (lbeProducto);
}
}
}
Nota: Hay que hacer referencia a la librería "System.Configuration.dll" para usar la clase ConfigurationManager para leer el archivo de configuración.
Crear el Archivo de Hoja de Estilo
Agregar un archivo de hoja de estilo llamado ACME.css y escribir lo siguiente:
body {
background-color:aqua;
}
.Titulo {
background-color:black;
color:white;
text-transform:uppercase;
font-size:xx-large;
font-weight:bold;
}
.AnchoTotal {
width:100%;
}
.Centrado {
text-align:center;
}
.Subtitulo {
background-color:white;
color:blue;
text-transform:capitalize;
font-size:x-large;
font-weight:bold;
}
.FilaCabecera {
background-color: lightgray;
color:black;
}
.FilaDatos {
background-color: white;
color:blue;
}
Crear la Pagina ASP .NET como un Formulario Web Form
Agregar un Formulario Web Form al proyecto llamado: "ListaProductos.aspx" y escribir lo siguiente:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ListaProductos.aspx.cs" Inherits="GridView_Paginado_Checks.ListaProductos" %>
<%@ Import Namespace="GridView_Paginado_Checks" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link href="ACME.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="AnchoTotal">
<tr class="Titulo">
<td>Paginacion en un GridView con Columna de Checks</td>
</tr>
<tr class="Subtitulo">
<td>Selecciona de la Lista de Productos</td>
</tr>
<tr>
<td>
<asp:GridView ID="gvProducto" AllowPaging="true" AutoGenerateColumns="false"
Width="800px" runat="server" OnPageIndexChanging="paginarProductos">
<HeaderStyle CssClass="FilaCabecera" />
<RowStyle CssClass="FilaDatos" />
<PagerStyle CssClass="FilaCabecera" />
<Columns>
<asp:TemplateField ItemStyle-Width="20px">
<ItemTemplate>
<asp:CheckBox ID="chkSeleccion" runat="server"
Checked="<%#((beProducto)Container.DataItem).Seleccion%>" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Código" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).IdProducto%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Descripción del Producto"
ItemStyle-Width="200px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).Nombre%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Id Prov" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).IdProveedor%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Id Cat" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).IdCategoria%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Pre Unit" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).PrecioUnitario.ToString("n2")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Stock" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).Stock%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td class="Centrado">
<asp:Button ID="btnGrabar" Text="Grabar" runat="server"
OnClick="grabarProductosSeleccionados" />
</td>
</tr>
<tr>
<td><asp:Label ID="lblMensaje" Font-Bold="true" runat="server"/></td>
</tr>
</table>
</div>
</form>
</body>
</html>
El preview del diseño se mostrará similar a la siguiente figura:
Escribir el siguiente código C# en la página:
using System;
using System.Text; //StringBuilder
using System.Collections.Generic; //List
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GridView_Paginado_Checks
{
public partial class ListaProductos : System.Web.UI.Page
{
List<beProducto> lbeProducto;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
brProducto obrProducto = new brProducto();
lbeProducto = obrProducto.listar();
Session["Productos"] = lbeProducto;
gvProducto.DataSource = lbeProducto;
gvProducto.DataBind();
}
else
{
guardarChecksPagina();
}
}
protected void paginarProductos(object sender, GridViewPageEventArgs e)
{
lbeProducto = (List<beProducto>)Session["Productos"];
gvProducto.PageIndex = e.NewPageIndex;
gvProducto.DataSource = lbeProducto;
gvProducto.DataBind();
}
private void guardarChecksPagina()
{
lbeProducto = (List<beProducto>)Session["Productos"];
int indice;
for (int i = 0; i < gvProducto.Rows.Count; i++)
{
indice = (gvProducto.PageIndex * gvProducto.PageSize) + i;
lbeProducto[indice].Seleccion =
((CheckBox)gvProducto.Rows[i].Cells[0].Controls[1]).Checked;
}
Session["Productos"] = lbeProducto;
}
protected void grabarProductosSeleccionados(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder("Ids Seleccionados: ");
lbeProducto = (List<beProducto>)Session["Productos"];
//List<beProducto> lbeSeleccion = lbeProducto.FindAll(x => x.Seleccion.Equals(true));
for (int i = 0; i < lbeProducto.Count; i++)
{
if (lbeProducto[i].Seleccion)
{
sb.Append(lbeProducto[i].IdProducto);
sb.Append(", ");
}
}
sb = sb.Remove(sb.Length - 2, 2);
lblMensaje.Text = sb.ToString();
}
}
}
Nota: La principal función es "guardarChecksPagina" que se llama en los PostBacks y permite guardar todos los checks de la pagina actual en la lista de objetos.
Además en la función controladora "grabarProductosSeleccionados" asociada al click del botón "btnGuardar" se usa un StringBuilder para concatenar los códigos de todos los checks seleccionados y mostrarlos en el Label "lblMensaje".
En esta función hay una linea comentada que permite crear una lista solo con los productos seleccionados, para nuestro caso solo se mostrará en pantalla, pero si se debe enviar al servidor solo los productos seleccionados usar esta linea y comentar el resto.
Modificar el Archivo Web.Config para especificar la cadena de conexión a Northwind
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="conNW" providerName="System.Data.SqlClient"
connectionString="uid=UsuarioNW;pwd=123456;data source=DSOFT\Sqlexpress;
initial catalog=Northwind"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
Probar la Pagina Web
Guardar el Sitio Web, clic derecho a la Pagina "ListaProductos.aspx" y seleccionar "Ver en el explorador". Se mostrará una ventana similar a la siguiente figura:
Seleccionar checks de diferentes paginas y verificar que se han quedado seleccionados al cambiar de pagina, luego click al botón "Guardar" para confirmar los códigos solo de los productos seleccionados, tal como se muestra en la siguiente figura:
Comentario Final
En este post hemos visto como mantener los registros seleccionados usando una columna tipo check en una grilla paginada, la cual usa plantillas de datos para las columnas y asocia la propiedad checked del checkbox a una propiedad Seleccion del modelo o entidad del negocio.
Descarga:
GridView_Paginado_Checks
Después de mas de 2 meses retomamos los posts de ASP .NET WebForms, en esta ocasión publicaré un caso práctico muy útil.
Requerimiento
Se desea listar registros en forma paginada usando el GridView pero mostrando una columna con Checks que permita seleccionar los registros para un uso posterior como grabar datos en el servidor.
Problema
Si creamos una grilla sin paginar con una columna de tipo CheckBox no hay problemas, pero si paginamos, al seleccionar los checks de una pagina y cambiar de pagina se perderán debido a que la grilla siempre se tiene que enlazar nuevamente para mostrar la pagina seleccionada.
Solución
Para solucionar el problema debemos enlazar la columna checkbox a una propiedad de la entidad del negocio de tipo boolean, luego debemos almacenar el valor seleccionado, lo cual se puede hacer de 2 formas:
1. Guardar el valor cada vez que se selecciona el check, ya sea para marcar o desmarcar.
2. Guardar los valores seleccionados al regresar al servidor ya sea al cambiar de página o al hacer PostBack mediante algún botón.
Definitivamente, la mejor opción es la segunda, es decir, cada vez que ocurra un Postback guardaremos los checks seleccionados de la pagina actual.
Crear el Procedimiento Almacenado en la Base de Datos de SQL Server
Create Procedure uspProductsListar
As
Select ProductID,ProductName,SupplierID,CategoryID,UnitPrice,UnitsInStock
From Products
Crear la Aplicación Web en ASP .NET Web Form
Crear un "Nuevo Sitio web vacío de ASP .NET" en C# llamado "GridView_Paginado_Checks".
Para simplificar el Demo no he creado librerías de clases y las clases las he incluido dentro de la aplicación Web.
Crear la Clase Entidad del Negocio
Crear la clase beProducto escribiendo el siguiente código:
using System;
namespace GridView_Paginado_Checks
{
public class beProducto
{
public bool Seleccion { get; set; }
public int IdProducto { get; set; }
public string Nombre { get; set; }
public int IdProveedor { get; set; }
public int IdCategoria { get; set; }
public decimal PrecioUnitario { get; set; }
public short Stock { get; set; }
}
}
Nota: La propiedad Seleccion es la que se va a enlazar al check para guardar el valor seleccionado.
Crear la clase daProducto escribiendo el siguiente código:
using System;
using System.Data; //CommadType
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using System.Collections.Generic; //List
namespace GridView_Paginado_Checks
{
public class daProducto
{
public List<beProducto> listar(SqlConnection con)
{
List<beProducto> lbeProducto = null;
SqlCommand cmd = new SqlCommand("uspProductsListar", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
if (drd != null)
{
lbeProducto = new List<beProducto>();
int posIdProducto = drd.GetOrdinal("ProductID");
int posNombre = drd.GetOrdinal("ProductName");
int posIdProveedor = drd.GetOrdinal("SupplierID");
int posIdCategoria = drd.GetOrdinal("CategoryID");
int posPrecioUnitario = drd.GetOrdinal("UnitPrice");
int posStock = drd.GetOrdinal("UnitsInStock");
beProducto obeProducto;
while (drd.Read())
{
obeProducto = new beProducto();
obeProducto.IdProducto = drd.GetInt32(posIdProducto);
obeProducto.Nombre = drd.GetString(posNombre);
obeProducto.IdProveedor = drd.GetInt32(posIdProveedor);
obeProducto.IdCategoria = drd.GetInt32(posIdCategoria);
obeProducto.PrecioUnitario = drd.GetDecimal(posPrecioUnitario);
obeProducto.Stock = drd.GetInt16(posStock);
lbeProducto.Add(obeProducto);
}
drd.Close();
}
return (lbeProducto);
}
}
}
Nota: Tiene que haberse creado el Procedimiento Almacenado "uspProductsListar" en la BD Northwind.
Crear la Clase de Reglas del Negocio
Crear la clase brProducto escribiendo el siguiente código:
using System;
using System.Collections.Generic; //List
using System.Data.SqlClient; //SqlConnection
using System.Configuration; //ConfigurationManager
namespace GridView_Paginado_Checks
{
public class brProducto
{
public List<beProducto> listar()
{
List<beProducto> lbeProducto = null;
string conexion = ConfigurationManager.ConnectionStrings["conNW"].ConnectionString;
using (SqlConnection con = new SqlConnection(conexion))
{
try
{
con.Open();
daProducto odaProducto = new daProducto();
lbeProducto = odaProducto.listar(con);
}
catch (SqlException ex)
{
foreach (SqlError err in ex.Errors)
{
//Capturar cada error y grabar un Log
}
}
} //con.Close(); con.Dispose(); con = null;
return (lbeProducto);
}
}
}
Nota: Hay que hacer referencia a la librería "System.Configuration.dll" para usar la clase ConfigurationManager para leer el archivo de configuración.
Crear el Archivo de Hoja de Estilo
Agregar un archivo de hoja de estilo llamado ACME.css y escribir lo siguiente:
body {
background-color:aqua;
}
.Titulo {
background-color:black;
color:white;
text-transform:uppercase;
font-size:xx-large;
font-weight:bold;
}
.AnchoTotal {
width:100%;
}
.Centrado {
text-align:center;
}
.Subtitulo {
background-color:white;
color:blue;
text-transform:capitalize;
font-size:x-large;
font-weight:bold;
}
.FilaCabecera {
background-color: lightgray;
color:black;
}
.FilaDatos {
background-color: white;
color:blue;
}
Crear la Pagina ASP .NET como un Formulario Web Form
Agregar un Formulario Web Form al proyecto llamado: "ListaProductos.aspx" y escribir lo siguiente:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ListaProductos.aspx.cs" Inherits="GridView_Paginado_Checks.ListaProductos" %>
<%@ Import Namespace="GridView_Paginado_Checks" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link href="ACME.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="AnchoTotal">
<tr class="Titulo">
<td>Paginacion en un GridView con Columna de Checks</td>
</tr>
<tr class="Subtitulo">
<td>Selecciona de la Lista de Productos</td>
</tr>
<tr>
<td>
<asp:GridView ID="gvProducto" AllowPaging="true" AutoGenerateColumns="false"
Width="800px" runat="server" OnPageIndexChanging="paginarProductos">
<HeaderStyle CssClass="FilaCabecera" />
<RowStyle CssClass="FilaDatos" />
<PagerStyle CssClass="FilaCabecera" />
<Columns>
<asp:TemplateField ItemStyle-Width="20px">
<ItemTemplate>
<asp:CheckBox ID="chkSeleccion" runat="server"
Checked="<%#((beProducto)Container.DataItem).Seleccion%>" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Código" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).IdProducto%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Descripción del Producto"
ItemStyle-Width="200px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).Nombre%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Id Prov" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).IdProveedor%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Id Cat" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).IdCategoria%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Pre Unit" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).PrecioUnitario.ToString("n2")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Stock" ItemStyle-Width="80px">
<ItemTemplate>
<%#((beProducto)Container.DataItem).Stock%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td class="Centrado">
<asp:Button ID="btnGrabar" Text="Grabar" runat="server"
OnClick="grabarProductosSeleccionados" />
</td>
</tr>
<tr>
<td><asp:Label ID="lblMensaje" Font-Bold="true" runat="server"/></td>
</tr>
</table>
</div>
</form>
</body>
</html>
Escribir el siguiente código C# en la página:
using System;
using System.Text; //StringBuilder
using System.Collections.Generic; //List
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GridView_Paginado_Checks
{
public partial class ListaProductos : System.Web.UI.Page
{
List<beProducto> lbeProducto;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
brProducto obrProducto = new brProducto();
lbeProducto = obrProducto.listar();
Session["Productos"] = lbeProducto;
gvProducto.DataSource = lbeProducto;
gvProducto.DataBind();
}
else
{
guardarChecksPagina();
}
}
protected void paginarProductos(object sender, GridViewPageEventArgs e)
{
lbeProducto = (List<beProducto>)Session["Productos"];
gvProducto.PageIndex = e.NewPageIndex;
gvProducto.DataSource = lbeProducto;
gvProducto.DataBind();
}
private void guardarChecksPagina()
{
lbeProducto = (List<beProducto>)Session["Productos"];
int indice;
for (int i = 0; i < gvProducto.Rows.Count; i++)
{
indice = (gvProducto.PageIndex * gvProducto.PageSize) + i;
lbeProducto[indice].Seleccion =
((CheckBox)gvProducto.Rows[i].Cells[0].Controls[1]).Checked;
}
Session["Productos"] = lbeProducto;
}
protected void grabarProductosSeleccionados(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder("Ids Seleccionados: ");
lbeProducto = (List<beProducto>)Session["Productos"];
//List<beProducto> lbeSeleccion = lbeProducto.FindAll(x => x.Seleccion.Equals(true));
for (int i = 0; i < lbeProducto.Count; i++)
{
if (lbeProducto[i].Seleccion)
{
sb.Append(lbeProducto[i].IdProducto);
sb.Append(", ");
}
}
sb = sb.Remove(sb.Length - 2, 2);
lblMensaje.Text = sb.ToString();
}
}
}
Nota: La principal función es "guardarChecksPagina" que se llama en los PostBacks y permite guardar todos los checks de la pagina actual en la lista de objetos.
Además en la función controladora "grabarProductosSeleccionados" asociada al click del botón "btnGuardar" se usa un StringBuilder para concatenar los códigos de todos los checks seleccionados y mostrarlos en el Label "lblMensaje".
En esta función hay una linea comentada que permite crear una lista solo con los productos seleccionados, para nuestro caso solo se mostrará en pantalla, pero si se debe enviar al servidor solo los productos seleccionados usar esta linea y comentar el resto.
Modificar el Archivo Web.Config para especificar la cadena de conexión a Northwind
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="conNW" providerName="System.Data.SqlClient"
connectionString="uid=UsuarioNW;pwd=123456;data source=DSOFT\Sqlexpress;
initial catalog=Northwind"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
Probar la Pagina Web
Guardar el Sitio Web, clic derecho a la Pagina "ListaProductos.aspx" y seleccionar "Ver en el explorador". Se mostrará una ventana similar a la siguiente figura:
Seleccionar checks de diferentes paginas y verificar que se han quedado seleccionados al cambiar de pagina, luego click al botón "Guardar" para confirmar los códigos solo de los productos seleccionados, tal como se muestra en la siguiente figura:
Comentario Final
En este post hemos visto como mantener los registros seleccionados usando una columna tipo check en una grilla paginada, la cual usa plantillas de datos para las columnas y asocia la propiedad checked del checkbox a una propiedad Seleccion del modelo o entidad del negocio.
Descarga:
GridView_Paginado_Checks
Etiquetas:
.NET,
ADO.NET,
AllowPaging,
ASP.NET,
C#,
CheckBox,
CSS,
Data Binding,
Data Templates,
Demos,
GridView,
Lduenas,
Listas Objetos,
NewPageIndex,
Paginar,
Session,
StringBuilder,
Templates,
Web Forms
viernes, 10 de octubre de 2014
El Libro del Día: Fast ASP.NET Websites
El Libro del Día: 2014-10-10
Titulo: Fast ASP.NET Websites
Autor: Dean Alan Hume
Editorial: Manning
Nro Paginas: 210
Capítulos:
PART 1 DEFINING PERFORMANCE
1 High-speed websites
2 First steps toward a faster website
PART 2 GENERAL PERFORMANCE BEST PRACTICES
3 Compression
4 Caching: The sell-by date
5 Minifying and bundling static files
6 HTML optimization tips
7 Image optimization
8 ETags
9 Content Delivery Networks
PART 3 ASP.NET-SPECIFIC TECHNIQUES
10 Tweaking ASP.NET MVC performance
11 Tweaking ASP.NET Web Forms performance
12 Data caching
Descarga:
Fast_ASPNET_Websites
Titulo: Fast ASP.NET Websites
Autor: Dean Alan Hume
Editorial: Manning
Nro Paginas: 210
Capítulos:
PART 1 DEFINING PERFORMANCE
1 High-speed websites
2 First steps toward a faster website
PART 2 GENERAL PERFORMANCE BEST PRACTICES
3 Compression
4 Caching: The sell-by date
5 Minifying and bundling static files
6 HTML optimization tips
7 Image optimization
8 ETags
9 Content Delivery Networks
PART 3 ASP.NET-SPECIFIC TECHNIQUES
10 Tweaking ASP.NET MVC performance
11 Tweaking ASP.NET Web Forms performance
12 Data caching
Descarga:
Fast_ASPNET_Websites
Etiquetas:
ASP.NET,
Best Practices,
Caching,
CDN,
Compression,
Data Caching,
Dean Alan Hume,
ETags,
Fast Websites,
HTML,
Image,
Libros,
Manning,
Minifying,
MVC,
Optimization,
Performance,
Static Files,
Tips,
Web Forms
martes, 30 de septiembre de 2014
El Libro del Día: JavaScript & jQuery The Missing Manual
El Libro del Día: 2014-09-30
Titulo: JavaScript & jQuery The Missing Manual
Autor: David Sawyer McFarland
Editorial: O'Reilly
Nro Paginas: 538
Capítulos:
Part One: Getting Started with JavaScript
Chapter 1: Writing Your First JavaScript Program
Chapter 2: The Grammar of JavaScript
Chapter 3: Adding Logic and Control to Your Programs
Part Two: Getting Started with jQuery
Chapter 4: Introducing jQuery
Chapter 5: Action/Reaction: Making Pages Come Alive with Events
Chapter 6: Animations and Effects
Part Three: Building Web Page Features
Chapter 7: Improving Your Images
Chapter 8: Improving Navigation
Chapter 9: Enhancing Web Forms
Chapter 10: Expanding Your Interface
Part Four: Ajax: Communication with the Web Server
Chapter 11: Introducing Ajax
Chapter 12: Flickr and Google Maps
Part Five: Tips, Tricks, and Troubleshooting
Chapter 13: Getting the Most from jQuery
Chapter 14: Going Further with JavaScript
Chapter 15: Troubleshooting and Debugging
Appendix A: JavaScript Resources
Descarga:
JavaScript_jQuery_TheMissingManual
Titulo: JavaScript & jQuery The Missing Manual
Autor: David Sawyer McFarland
Editorial: O'Reilly
Nro Paginas: 538
Capítulos:
Part One: Getting Started with JavaScript
Chapter 1: Writing Your First JavaScript Program
Chapter 2: The Grammar of JavaScript
Chapter 3: Adding Logic and Control to Your Programs
Part Two: Getting Started with jQuery
Chapter 4: Introducing jQuery
Chapter 5: Action/Reaction: Making Pages Come Alive with Events
Chapter 6: Animations and Effects
Part Three: Building Web Page Features
Chapter 7: Improving Your Images
Chapter 8: Improving Navigation
Chapter 9: Enhancing Web Forms
Chapter 10: Expanding Your Interface
Part Four: Ajax: Communication with the Web Server
Chapter 11: Introducing Ajax
Chapter 12: Flickr and Google Maps
Part Five: Tips, Tricks, and Troubleshooting
Chapter 13: Getting the Most from jQuery
Chapter 14: Going Further with JavaScript
Chapter 15: Troubleshooting and Debugging
Appendix A: JavaScript Resources
Descarga:
JavaScript_jQuery_TheMissingManual
Etiquetas:
AJAX,
Animations,
David Sawyer McFarland,
Debugging,
Effects,
Events,
Flickr,
Google Maps,
Grammar,
Images,
Javascript,
jQuery,
Libros,
Navigation,
O'Reilly,
Resources,
Troubleshooting,
Web Forms,
Web Page
domingo, 21 de septiembre de 2014
El Libro del Día: Beginning ASP.NET 4.5 in C#
El Libro del Día: 2014-09-21
Titulo: Beginning ASP.NET 4.5 in C#
Autor: Matthew MacDonald
Editorial: Apress
Nro Paginas: 900
Capítulos:
Part 1: Introducing .NET
Chapter 1: The Big Picture
Chapter 2: The C# Language
Chapter 3: Types, Objects, and Namespaces
Part 2: Developing ASP.NET Applications
Chapter 4: Visual Studio
Chapter 5: Web Form Fundamentals
Chapter 6: Web Controls
Chapter 7: Error Handling, Logging, and Tracing
Chapter 8: State Management
Part 3: Building Better Web Forms
Chapter 9: Validation
Chapter 10: Rich Controls
Chapter 11: User Controls and Graphics
Chapter 12: Styles, Themes, and Master Pages
Chapter 13: Website Navigation
Part 4: Working with Data
Chapter 14: ADO.NET Fundamentals
Chapter 15: Data Binding
Chapter 16: The Data Controls
Chapter 17: Files and Streams
Chapter 18: XML
Part 5: Website Security
Chapter 19: Security Fundamentals
Chapter 20: Membership
Chapter 21: Profiles
Part 6: Advanced ASP.NET
Chapter 22: Component-Based Programming
Chapter 23: Caching
Chapter 24: LINQ and the Entity Framework
Chapter 25: ASP.NET AJAX
Chapter 26: Deploying ASP.NET Applications
Descarga:
Beginning_ASPNET_4.5_C#
Titulo: Beginning ASP.NET 4.5 in C#
Autor: Matthew MacDonald
Editorial: Apress
Nro Paginas: 900
Capítulos:
Part 1: Introducing .NET
Chapter 1: The Big Picture
Chapter 2: The C# Language
Chapter 3: Types, Objects, and Namespaces
Part 2: Developing ASP.NET Applications
Chapter 4: Visual Studio
Chapter 5: Web Form Fundamentals
Chapter 6: Web Controls
Chapter 7: Error Handling, Logging, and Tracing
Chapter 8: State Management
Part 3: Building Better Web Forms
Chapter 9: Validation
Chapter 10: Rich Controls
Chapter 11: User Controls and Graphics
Chapter 12: Styles, Themes, and Master Pages
Chapter 13: Website Navigation
Part 4: Working with Data
Chapter 14: ADO.NET Fundamentals
Chapter 15: Data Binding
Chapter 16: The Data Controls
Chapter 17: Files and Streams
Chapter 18: XML
Part 5: Website Security
Chapter 19: Security Fundamentals
Chapter 20: Membership
Chapter 21: Profiles
Part 6: Advanced ASP.NET
Chapter 22: Component-Based Programming
Chapter 23: Caching
Chapter 24: LINQ and the Entity Framework
Chapter 25: ASP.NET AJAX
Chapter 26: Deploying ASP.NET Applications
Descarga:
Beginning_ASPNET_4.5_C#
Etiquetas:
ADO.NET,
AJAX,
Apress,
ASP.NET,
C#,
Graphics,
Libros,
LINQ,
Logging,
Master Pages,
Matthew MacDonald,
Rich Controls,
Styles,
Tracing,
Types,
User Controls,
Validation,
Web Controls,
Web Forms,
XML
jueves, 18 de septiembre de 2014
El Libro del Día: Programming Microsoft ASP.NET 4
El Libro del Día: 2014-09-18
Titulo: Programming Microsoft ASP.NET 4
Autor: Dino Esposito
Editorial: Microsoft
Nro Paginas: 988
Capítulos:
Part I The ASP.NET Runtime Environment
1 ASP.NET Web Forms Today
2 ASP.NET and IIS
3 ASP.NET Configuration
4 HTTP Handlers, Modules, and Routing
Part II ASP.NET Pages and Server Controls
5 Anatomy of an ASP.NET Page
6 ASP.NET Core Server Controls
7 Working with the Page
8 Page Composition and Usability
9 ASP.NET Input Forms
10 Data Binding
11 The ListView Control
12 Custom Controls
Part III Design of the Application
13 Principles of Software Design
14 Layers of an Application
15 The Model-View-Presenter Pattern
Part IV Infrastructure of the Application
16 The HTTP Request Context
17 ASP.NET State Management
18 ASP.NET Caching
19 ASP.NET Security
Part V The Client Side
20 Ajax Programming
21 jQuery Programming
Descarga:
Programming_Microsoft_ASPNET_4
Titulo: Programming Microsoft ASP.NET 4
Autor: Dino Esposito
Editorial: Microsoft
Nro Paginas: 988
Capítulos:
Part I The ASP.NET Runtime Environment
1 ASP.NET Web Forms Today
2 ASP.NET and IIS
3 ASP.NET Configuration
4 HTTP Handlers, Modules, and Routing
Part II ASP.NET Pages and Server Controls
5 Anatomy of an ASP.NET Page
6 ASP.NET Core Server Controls
7 Working with the Page
8 Page Composition and Usability
9 ASP.NET Input Forms
10 Data Binding
11 The ListView Control
12 Custom Controls
Part III Design of the Application
13 Principles of Software Design
14 Layers of an Application
15 The Model-View-Presenter Pattern
Part IV Infrastructure of the Application
16 The HTTP Request Context
17 ASP.NET State Management
18 ASP.NET Caching
19 ASP.NET Security
Part V The Client Side
20 Ajax Programming
21 jQuery Programming
Descarga:
Programming_Microsoft_ASPNET_4
Etiquetas:
AJAX,
ASP .NET,
Caching,
Custom Controls,
Data Binding,
Dino Esposito,
HTTP Handlers,
IIS,
jQuery,
Layers,
Libros,
ListView,
Microsoft,
Modules,
MVVM,
Routing,
Security,
Server Controls,
State Management,
Web Forms
miércoles, 17 de septiembre de 2014
El Libro del Día: ASP.NET 4.0 in Practice
El Libro del Día: 2014-09-17
Titulo: ASP.NET 4.0 in Practice
Autor: Daniele Bochicchio, Stefano Mostarda, Marco De Sanctis
Editorial: Manning
Nro Paginas: 506
Capítulos:
PART 1 ASP.NET FUNDAMENTALS
1 Getting acquainted with ASP.NET 4.0
2 Data access reloaded: Entity Framework
3 Integrating Entity Framework and ASP.NET
PART 2 ASP.NET WEB FORMS
4 Building the user interface with ASP.NET Web Forms
5 Data binding in ASP.NET Web Forms
6 Custom controls
7 Taking control of markup
PART 3 ASP.NET MVC
8 Introducing ASP.NET MVC
9 Customizing and extending ASP.NET MVC
PART 4 SECURITY
10 ASP.NET security
11 ASP.NET authentication and authorization
PART 5 ADVANCED TOPICS
12 Ajax and RIAs with ASP.NET 4.0
13 State 348
14 Caching in ASP.NET
15 Extreme ASP.NET 4.0
16 Performance and optimizations
Descarga:
ASPNET_4.0_InPractice
Titulo: ASP.NET 4.0 in Practice
Autor: Daniele Bochicchio, Stefano Mostarda, Marco De Sanctis
Editorial: Manning
Nro Paginas: 506
Capítulos:
PART 1 ASP.NET FUNDAMENTALS
1 Getting acquainted with ASP.NET 4.0
2 Data access reloaded: Entity Framework
3 Integrating Entity Framework and ASP.NET
PART 2 ASP.NET WEB FORMS
4 Building the user interface with ASP.NET Web Forms
5 Data binding in ASP.NET Web Forms
6 Custom controls
7 Taking control of markup
PART 3 ASP.NET MVC
8 Introducing ASP.NET MVC
9 Customizing and extending ASP.NET MVC
PART 4 SECURITY
10 ASP.NET security
11 ASP.NET authentication and authorization
PART 5 ADVANCED TOPICS
12 Ajax and RIAs with ASP.NET 4.0
13 State 348
14 Caching in ASP.NET
15 Extreme ASP.NET 4.0
16 Performance and optimizations
Descarga:
ASPNET_4.0_InPractice
Etiquetas:
AJAX,
ASP .NET,
Authentication,
Caching,
Custom Controls,
Daniele Bochicchio,
Data Binding,
Entity Framework,
Libros,
Manning,
Marco De Sanctis,
MVC,
Performance,
RIAs,
Security,
State,
Stefano Mostarda,
Web Forms
martes, 19 de agosto de 2014
El Demo del Día: Preview de Imagen con FileReader al usar FileUpload
Preview de Imagen con FileReader al usar FileUpload
Requerimiento
Se desea enviar y grabar una imagen en el servidor desde una aplicación Web en ASP .NET, pero antes de enviarla se necesita mostrar el contenido de la imagen el el cliente (Preview).
Solución
Para este fin usaremos FileSystem API de HTML5, en especial la clase FileReader que permite leer un archivo en el cliente y devolver los datos en varios formatos, entre ellos como una URL.
Nota: En muchos sitios, esto lo hacen enviando la imagen al servidor y luego recién hacen el preview, pero si no es la imagen deseada, igual ya se fue hasta el servidor. Lo mejor es hacerlo en el cliente y evitar los envíos innecesarios al servidor web.
Crear la Aplicación Web en ASP .NET Web Form
Crear un "Nuevo Sitio web vacío de ASP .NET" en C# llamado "PreviewImagenFileUpload" y crear las siguientes carpetas:
- Archivos: Para almacenar las imágenes subidas al servidor.
- Paginas: Para contener la pagina de Registro de imágenes.
- Scripts: Para almacenar las rutinas de JavaScript No obstrusivo.
Diseñar la Pagina ASP .NET como un Formulario Web Form
Seleccionar la carpeta "Paginas" y agregar un Formulario Web Form llamado: "Registro.aspx" y escribir el siguiente código:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Registro.aspx.cs" Inherits="Paginas_Registro" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Registro de Fotos</title>
<script src="../Scripts/Rutinas.js"></script>
<script>cargarScriptPagina();</script>
</head>
<body style="background-color:aqua">
<form id="frmRegistro" runat="server">
<div style="text-align:center">
<h1>Preview de Imagen con FileReader al usar FileUpload</h1>
<h2>Registro de Fotos</h2>
<h3>Selecciona la Foto a enviar:
<asp:FileUpload ID="fupFoto" runat="server" />
</h3>
<img id="imgFoto" width="200" height="200" alt="" /><br />
<asp:Button ID="btnEnviar" OnClick="btnEnviar_Click" Text="Enviar" runat="server" />
</div>
</form>
</body>
</html>
Nota: En la sección de Scripts se tiene que definir el archivo de JavaScript que tiene las Rutinas de validación y que realiza el Preview.
El diseño de la pagina se mostrará como en la siguiente figura:
Escribir código JavaScript No obstrusivo para Validar el envío y hacer el Preview
Seleccionar la carpeta "Scripts" y agregar un archivo de JavaScript llamado: "Rutinas.js" y escribir el siguiente código:
function cargarScriptPagina() {
window.onload = function () {
var frm = document.getElementById("frmRegistro");
var fup = document.getElementById("fupFoto");
frm.onsubmit = function () {
if (fup.value == "") {
alert("Selecciona un archivo de imagen");
return false;
}
return(true);
}
fup.onchange = function (e) {
var file = e.target.files[0];
if (file != null) {
var extension = file.name.substring(file.name.length - 4, file.name.length);
if (!((extension == ".jpg") || (extension == ".png"))) {
alert("El archivo debe ser jpg o png");
return false;
}
var reader = new FileReader();
if (reader != null) {
reader.onloadend = function () {
var img = document.getElementById("imgFoto");
img.src = reader.result;
};
reader.readAsDataURL(file);
}
else img.src = "No se puede mostrar la imagen";
}
else alert("No se puede mostrar la imagen");
}
}
}
Nota: En el evento "load" de la pagina se valida que se seleccione un archivo antes de enviar al servidor y cuando se selecciona un archivo se valida que sea una imagen jpg o png y se hace el preview usando la clase FileReader del FileSystem API.
Escribir código en el servidor para guardar la imagen en la carpeta Archivos
Escribir el siguiente código C# en la página:
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Paginas_Registro : System.Web.UI.Page
{
protected void btnEnviar_Click(object sender, EventArgs e)
{
if (fupFoto.PostedFile.ContentLength > 0)
{
string archivo = Server.MapPath(String.Format("../Archivos/{0}",
Path.GetFileName(fupFoto.PostedFile.FileName)));
if (File.Exists(archivo)) File.Delete(archivo);
fupFoto.PostedFile.SaveAs(archivo);
ClientScript.RegisterStartupScript(this.GetType(), "Mensaje",
"alert('La imagen fue grabada en el servidor');", true);
}
}
}
Nota: Se usa la propiedad "PostedFile" del control FileUpload para obtener el archivo enviado desde el cliente al servidor y lo grabamos en la carpeta Archivos usando su método "SaveAs".
Configurar el permiso de escritura al Usuario de IIS para escribir en la carpeta Archivos
Ingresar al Explorador de Windows y seleccionar la carpeta "Archivos" de nuestro proyecto, luego clic derecho "Propiedades", seleccionar el Tab "Security" y luego clic en el botón "Edit" y luego botón "Add" para agregar al usuario de IIS, si ya existe solo seleccionarlo y luego marcar los checks para darle permiso de escritura y lectura, tal como se muestra en la siguiente figura:
Probar la Pagina Web
Guardar el Sitio Web, clic derecho a la Pagina "Registro.aspx" y seleccionar "Ver en el explorador".
Clic al botón "Enviar" sin seleccionar nada y aparecerá un mensaje de validación que indica que hay que seleccionar un archivo de imagen.
Ahora intenta seleccionar un archivo que no sea un jpg o png, por ejemplo un archivo de texto y se muestra otro mensaje de validación que indica que tiene que ser jpg o png.
Finalmente, selecciona un archivo de imagen png o jpg y clic en "Enviar" y se guarda en el servidor en la carpeta "Archivos" y se muestra un mensaje de confirmación.
Comentario Final
En este post, aprendimos como subir un archivo de imagen al servidor, pero mostrando la imagen antes de enviarla para saber si es la adecuada. Para realizar este preview lo hicimos en el cliente mediante la clase FileReader de HTML5.
Lo interesante es que funciona en la mayoría de Navegadores (Browsers), por lo menos lo probé en IE11 y Chrome 36.
Descarga:
Demo16_Preview_Imagen_FileUpload
Requerimiento
Se desea enviar y grabar una imagen en el servidor desde una aplicación Web en ASP .NET, pero antes de enviarla se necesita mostrar el contenido de la imagen el el cliente (Preview).
Solución
Para este fin usaremos FileSystem API de HTML5, en especial la clase FileReader que permite leer un archivo en el cliente y devolver los datos en varios formatos, entre ellos como una URL.
Nota: En muchos sitios, esto lo hacen enviando la imagen al servidor y luego recién hacen el preview, pero si no es la imagen deseada, igual ya se fue hasta el servidor. Lo mejor es hacerlo en el cliente y evitar los envíos innecesarios al servidor web.
Crear la Aplicación Web en ASP .NET Web Form
Crear un "Nuevo Sitio web vacío de ASP .NET" en C# llamado "PreviewImagenFileUpload" y crear las siguientes carpetas:
- Archivos: Para almacenar las imágenes subidas al servidor.
- Paginas: Para contener la pagina de Registro de imágenes.
- Scripts: Para almacenar las rutinas de JavaScript No obstrusivo.
Diseñar la Pagina ASP .NET como un Formulario Web Form
Seleccionar la carpeta "Paginas" y agregar un Formulario Web Form llamado: "Registro.aspx" y escribir el siguiente código:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Registro.aspx.cs" Inherits="Paginas_Registro" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Registro de Fotos</title>
<script src="../Scripts/Rutinas.js"></script>
<script>cargarScriptPagina();</script>
</head>
<body style="background-color:aqua">
<form id="frmRegistro" runat="server">
<div style="text-align:center">
<h1>Preview de Imagen con FileReader al usar FileUpload</h1>
<h2>Registro de Fotos</h2>
<h3>Selecciona la Foto a enviar:
<asp:FileUpload ID="fupFoto" runat="server" />
</h3>
<img id="imgFoto" width="200" height="200" alt="" /><br />
<asp:Button ID="btnEnviar" OnClick="btnEnviar_Click" Text="Enviar" runat="server" />
</div>
</form>
</body>
</html>
Nota: En la sección de Scripts se tiene que definir el archivo de JavaScript que tiene las Rutinas de validación y que realiza el Preview.
El diseño de la pagina se mostrará como en la siguiente figura:
Escribir código JavaScript No obstrusivo para Validar el envío y hacer el Preview
Seleccionar la carpeta "Scripts" y agregar un archivo de JavaScript llamado: "Rutinas.js" y escribir el siguiente código:
window.onload = function () {
var frm = document.getElementById("frmRegistro");
var fup = document.getElementById("fupFoto");
frm.onsubmit = function () {
if (fup.value == "") {
alert("Selecciona un archivo de imagen");
return false;
}
return(true);
}
fup.onchange = function (e) {
var file = e.target.files[0];
if (file != null) {
var extension = file.name.substring(file.name.length - 4, file.name.length);
if (!((extension == ".jpg") || (extension == ".png"))) {
alert("El archivo debe ser jpg o png");
return false;
}
var reader = new FileReader();
if (reader != null) {
reader.onloadend = function () {
var img = document.getElementById("imgFoto");
img.src = reader.result;
};
reader.readAsDataURL(file);
}
else img.src = "No se puede mostrar la imagen";
}
else alert("No se puede mostrar la imagen");
}
}
}
Nota: En el evento "load" de la pagina se valida que se seleccione un archivo antes de enviar al servidor y cuando se selecciona un archivo se valida que sea una imagen jpg o png y se hace el preview usando la clase FileReader del FileSystem API.
Escribir código en el servidor para guardar la imagen en la carpeta Archivos
Escribir el siguiente código C# en la página:
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Paginas_Registro : System.Web.UI.Page
{
protected void btnEnviar_Click(object sender, EventArgs e)
{
if (fupFoto.PostedFile.ContentLength > 0)
{
string archivo = Server.MapPath(String.Format("../Archivos/{0}",
Path.GetFileName(fupFoto.PostedFile.FileName)));
if (File.Exists(archivo)) File.Delete(archivo);
fupFoto.PostedFile.SaveAs(archivo);
ClientScript.RegisterStartupScript(this.GetType(), "Mensaje",
"alert('La imagen fue grabada en el servidor');", true);
}
}
}
Nota: Se usa la propiedad "PostedFile" del control FileUpload para obtener el archivo enviado desde el cliente al servidor y lo grabamos en la carpeta Archivos usando su método "SaveAs".
Configurar el permiso de escritura al Usuario de IIS para escribir en la carpeta Archivos
Ingresar al Explorador de Windows y seleccionar la carpeta "Archivos" de nuestro proyecto, luego clic derecho "Propiedades", seleccionar el Tab "Security" y luego clic en el botón "Edit" y luego botón "Add" para agregar al usuario de IIS, si ya existe solo seleccionarlo y luego marcar los checks para darle permiso de escritura y lectura, tal como se muestra en la siguiente figura:
Probar la Pagina Web
Guardar el Sitio Web, clic derecho a la Pagina "Registro.aspx" y seleccionar "Ver en el explorador".
Clic al botón "Enviar" sin seleccionar nada y aparecerá un mensaje de validación que indica que hay que seleccionar un archivo de imagen.
Ahora intenta seleccionar un archivo que no sea un jpg o png, por ejemplo un archivo de texto y se muestra otro mensaje de validación que indica que tiene que ser jpg o png.
Finalmente, selecciona un archivo de imagen png o jpg y clic en "Enviar" y se guarda en el servidor en la carpeta "Archivos" y se muestra un mensaje de confirmación.
Comentario Final
En este post, aprendimos como subir un archivo de imagen al servidor, pero mostrando la imagen antes de enviarla para saber si es la adecuada. Para realizar este preview lo hicimos en el cliente mediante la clase FileReader de HTML5.
Lo interesante es que funciona en la mayoría de Navegadores (Browsers), por lo menos lo probé en IE11 y Chrome 36.
Descarga:
Demo16_Preview_Imagen_FileUpload
Etiquetas:
ASP .NET,
C#,
Demos,
FileReader,
FileSystem API,
FileUpload,
HTML5,
Images,
Javascript,
Lduenas,
PostedFile,
Preview,
Unobtrusive,
Web Forms
sábado, 9 de agosto de 2014
El Libro del Día: Professional Visual Studio 2013
El Libro del Día: 2014-08-09
Titulo: Professional Visual Studio 2013
Autor: Bruce Johnson
Editorial: Wrox
Nro Paginas: 1102
Capítulos:
Part I - Integrated Development Environment
Chapter 1 A Quick Tour
Chapter 2 The Solution Explorer, Toolbox, and Properties
Chapter 3 Options and Customizations
Chapter 4 The Visual Studio Workspace
Chapter 5 Find and Replace and Help
Part II - Getting Started
Chapter 6 Solutions, Projects, and Items
Chapter 7 IntelliSense and Bookmarks
Chapter 8 Code Snippets and Refactoring
Chapter 9 Server Explorer
Chapter 10 Modeling with the Class Designer
Part III - Digging Deeper
Chapter 11 Unit Testing
Chapter 12 Documentation with XML Comments
Chapter 13 Code Consistency Tools
Chapter 14 Code Generation with T4
Chapter 15 Project and Item Templates
Chapter 16 Language-Specific Features
Part IV - Rich Client Applications
Chapter 17 Windows Forms Applications
Chapter 18 Windows Presentation Foundation (WPF)
Chapter 19 Office Business Applications
Chapter 20 Windows Store Applications
Part V - Web Applications
Chapter 21 ASP.NET Web Forms
Chapter 22 ASP.NET MVC
Chapter 23 Silverlight
Chapter 24 Dynamic Data
Chapter 25 SharePoint
Chapter 26 Windows Azure
Part VI - Data
Chapter 27 Visual Database Tools
Chapter 28 DataSets and DataBinding
Chapter 29 Language Integrated Queries (LINQ)
Chapter 30 The ADO.NET Entity Framework
Chapter 31 Reporting
Part VII - Application Services
Chapter 32 Windows Communication Foundation (WCF)
Chapter 33 Windows Workflow Foundation (WF)
Chapter 34 Client Application Services
Chapter 35 Synchronization Services
Chapter 36 WCF RIA Services
Part VIII Configuration and Resources
Chapter 37 Configuration Files
Chapter 38 Connection Strings
Chapter 39 Resource Files
Part IX - Debugging
Chapter 40 Using the Debugging Windows
Chapter 41 Debugging with Breakpoints
Chapter 42 DataTips, Debug Proxies, and Visualizers
Chapter 43 Debugging Web Applications
Chapter 44 Advanced Debugging Techniques
Part X - Build and Deployment
Chapter 45 Upgrading with Visual Studio 2013
Chapter 46 Build Customization
Chapter 47 Assembly Versioning and Signing
Chapter 48 Obfuscation, Application Monitoring, and Management
Chapter 49 Packaging and Deployment
Chapter 50 Web Application Deployment
Part XI - Customizing and Extending Visual Studio
Chapter 51 The Automation Model
Chapter 52 Add-Ins
Chapter 53 Managed Extensibility Framework (MEF)
Part XII - Visual Studio Ultimate
Chapter 54 Visual Studio Ultimate for Architects
Chapter 55 Visual Studio Ultimate for Developers
Chapter 56 Visual Studio Ultimate for Testers
Chapter 57 Team Foundation Server
Descarga:
Professional_VisualStudio_2013
Titulo: Professional Visual Studio 2013
Autor: Bruce Johnson
Editorial: Wrox
Nro Paginas: 1102
Capítulos:
Part I - Integrated Development Environment
Chapter 1 A Quick Tour
Chapter 2 The Solution Explorer, Toolbox, and Properties
Chapter 3 Options and Customizations
Chapter 4 The Visual Studio Workspace
Chapter 5 Find and Replace and Help
Part II - Getting Started
Chapter 6 Solutions, Projects, and Items
Chapter 7 IntelliSense and Bookmarks
Chapter 8 Code Snippets and Refactoring
Chapter 9 Server Explorer
Chapter 10 Modeling with the Class Designer
Part III - Digging Deeper
Chapter 11 Unit Testing
Chapter 12 Documentation with XML Comments
Chapter 13 Code Consistency Tools
Chapter 14 Code Generation with T4
Chapter 15 Project and Item Templates
Chapter 16 Language-Specific Features
Part IV - Rich Client Applications
Chapter 17 Windows Forms Applications
Chapter 18 Windows Presentation Foundation (WPF)
Chapter 19 Office Business Applications
Chapter 20 Windows Store Applications
Part V - Web Applications
Chapter 21 ASP.NET Web Forms
Chapter 22 ASP.NET MVC
Chapter 23 Silverlight
Chapter 24 Dynamic Data
Chapter 25 SharePoint
Chapter 26 Windows Azure
Part VI - Data
Chapter 27 Visual Database Tools
Chapter 28 DataSets and DataBinding
Chapter 29 Language Integrated Queries (LINQ)
Chapter 30 The ADO.NET Entity Framework
Chapter 31 Reporting
Part VII - Application Services
Chapter 32 Windows Communication Foundation (WCF)
Chapter 33 Windows Workflow Foundation (WF)
Chapter 34 Client Application Services
Chapter 35 Synchronization Services
Chapter 36 WCF RIA Services
Part VIII Configuration and Resources
Chapter 37 Configuration Files
Chapter 38 Connection Strings
Chapter 39 Resource Files
Part IX - Debugging
Chapter 40 Using the Debugging Windows
Chapter 41 Debugging with Breakpoints
Chapter 42 DataTips, Debug Proxies, and Visualizers
Chapter 43 Debugging Web Applications
Chapter 44 Advanced Debugging Techniques
Part X - Build and Deployment
Chapter 45 Upgrading with Visual Studio 2013
Chapter 46 Build Customization
Chapter 47 Assembly Versioning and Signing
Chapter 48 Obfuscation, Application Monitoring, and Management
Chapter 49 Packaging and Deployment
Chapter 50 Web Application Deployment
Part XI - Customizing and Extending Visual Studio
Chapter 51 The Automation Model
Chapter 52 Add-Ins
Chapter 53 Managed Extensibility Framework (MEF)
Part XII - Visual Studio Ultimate
Chapter 54 Visual Studio Ultimate for Architects
Chapter 55 Visual Studio Ultimate for Developers
Chapter 56 Visual Studio Ultimate for Testers
Chapter 57 Team Foundation Server
Descarga:
Professional_VisualStudio_2013
Etiquetas:
ASP .NET,
Bruce Johnson,
Debugging,
IDE,
Libros,
LINQ,
MVC,
Office Business,
Reporting,
SharePoint,
Silverlight,
Unit Testing,
Visual Studio,
WCF,
Web Forms,
WF,
Windows Forms,
Windows Store,
WPF,
Wrox
viernes, 8 de agosto de 2014
El Libro del Día: Pro ASP.NET 4.5 in VB
El Libro del Día: 2014-08-08
Titulo: Pro ASP.NET 4.5 in VB (5th Edition)
Autor: Dan Mabbutt, Adam Freeman, Matthew MacDonald
Editorial: Apress
Nro Paginas: 1192
Capítulos:
Part 1: Getting Started
Chapter 1: Your First ASP.NET Application
Chapter 2: Putting ASP.NET in Context
Chapter 3: Essential VB Language Features
Chapter 4: Using jQuery
Chapter 5: Essential Development Tools
Chapter 6: SportsStore: A Real Application
Chapter 7: SportsStore: Navigation and Cart
Chapter 8: SportsStore: Completing the Cart
Chapter 9: SportsStore: Administration
Chapter 10: SportsStore: Deployment
Chapter 11: Testable Web Apps
Part 2: The Core ASP.NET Platform
Chapter 12: Working with Web Forms
Chapter 13: Lifecycles and Context
Chapter 14: Modules
Chapter 15: Handlers
Chapter 16: Page and Control Lifecycle Events
Chapter 17: Managing Request Execution
Chapter 18: Managing State Data
Chapter 19: Caching
Chapter 20: Caching Output
Chapter 21: Handling Errors
Chapter 22: Managing Paths
Chapter 23: URL Routing
Chapter 24: Advanced URL Routing
Chapter 25: Authentication and Authorization
Chapter 26: Membership and OpenAuth
Chapter 27: ASP.NET Configuration
Chapter 28: Asynchronous Request Handling
Part 3: Forms and Controls
Chapter 29: Working with Controls
Chapter 30: Forms and Request Validation
Chapter 31: Creating Custom Controls
Chapter 32: Stateful Controls
Chapter 33: Server-Side HTML Elements
Chapter 34: Model Binding
Chapter 35: Data Binding
Chapter 36: Basic Data Controls
Chapter 37: Complex Data Controls
Chapter 38: Other ASP.NET Controls
Part 4: Client-Side Development
Chapter 39: Managing Scripts and Styles
Chapter 40: Ajax and Web Services
Chapter 41: Client-Side Validation
Descarga:
Pro_ASPNET_4.5_VB
Titulo: Pro ASP.NET 4.5 in VB (5th Edition)
Autor: Dan Mabbutt, Adam Freeman, Matthew MacDonald
Editorial: Apress
Nro Paginas: 1192
Capítulos:
Part 1: Getting Started
Chapter 1: Your First ASP.NET Application
Chapter 2: Putting ASP.NET in Context
Chapter 3: Essential VB Language Features
Chapter 4: Using jQuery
Chapter 5: Essential Development Tools
Chapter 6: SportsStore: A Real Application
Chapter 7: SportsStore: Navigation and Cart
Chapter 8: SportsStore: Completing the Cart
Chapter 9: SportsStore: Administration
Chapter 10: SportsStore: Deployment
Chapter 11: Testable Web Apps
Part 2: The Core ASP.NET Platform
Chapter 12: Working with Web Forms
Chapter 13: Lifecycles and Context
Chapter 14: Modules
Chapter 15: Handlers
Chapter 16: Page and Control Lifecycle Events
Chapter 17: Managing Request Execution
Chapter 18: Managing State Data
Chapter 19: Caching
Chapter 20: Caching Output
Chapter 21: Handling Errors
Chapter 22: Managing Paths
Chapter 23: URL Routing
Chapter 24: Advanced URL Routing
Chapter 25: Authentication and Authorization
Chapter 26: Membership and OpenAuth
Chapter 27: ASP.NET Configuration
Chapter 28: Asynchronous Request Handling
Part 3: Forms and Controls
Chapter 29: Working with Controls
Chapter 30: Forms and Request Validation
Chapter 31: Creating Custom Controls
Chapter 32: Stateful Controls
Chapter 33: Server-Side HTML Elements
Chapter 34: Model Binding
Chapter 35: Data Binding
Chapter 36: Basic Data Controls
Chapter 37: Complex Data Controls
Chapter 38: Other ASP.NET Controls
Part 4: Client-Side Development
Chapter 39: Managing Scripts and Styles
Chapter 40: Ajax and Web Services
Chapter 41: Client-Side Validation
Descarga:
Pro_ASPNET_4.5_VB
Etiquetas:
Adam Freeman,
AJAX,
Apress,
ASP .NET,
Asynchronous,
Binding,
Caching,
Controls,
Custom Controls,
Dan Mabbutt,
Handlers,
jQuery,
Libros,
Matthew MacDonald,
Membership,
Modules,
SportsStore,
URL Routing,
VB,
Web Forms
Suscribirse a:
Entradas (Atom)














