Dominar la biblioteca de controles
Wisej.NET incluye más de cien controles (cuadrículas, gráficos, árboles, editores, contenedores de diseño y mucho más), y conocerlos bien marca la diferencia entre pelearse con la interfaz y avanzar a toda velocidad. Este curso es un recorrido en profundidad por la biblioteca de controles y por cómo sacar el máximo partido a cada familia. Aprenderás a fondo las cuadrículas y los controles de datos, construirás gráficos completos y estructuras de árbol, compondrás diseños adaptables y ampliarás el conjunto con tus propios widgets personalizados.
Saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados.
- Nivel: Intermediate
- Duración: 9 h
- Módulos: 7
Temario
Módulo 1: Modelo mental de la biblioteca de controles
Módulo 1 de Dominar la biblioteca de controles — saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados. Lee la guía de la lección y la guía del laboratorio / examen, mira el recorrido guiado sobre las familias de controles y el shell de Operations Console, supera la evaluación de conocimientos y después completa el laboratorio práctico en Operations Console.
- LecturaGuía de la lección · 14 min
El árbol de controles del servidor y el modelo de widgets del navegador, las familias de controles, las propiedades comunes y las convenciones de nomenclatura, y el shell de Operations Console que crece a lo largo del curso. Qué significa esto para un desarrollador de Wisej.NET y cómo leer este módulo.
- LecturaGuía del laboratorio / examen · 10 min
Lo que construirás en el laboratorio práctico, el enfoque sugerido y los entregables requeridos.
- Lección en vídeoFamilias de controles y el shell de Operations Console · 14 min
Familias de controles y el shell de Operations Console: un recorrido guiado del Módulo 1, construido paso a paso en Operations Console. Se ejecuta aquí mismo, en el reproductor.
Transcripción de la narración
Construya la consola de operaciones alrededor del modelo de control Wisej.NET. Su código C sharp cambia los objetos del lado del servidor y el marco sincroniza los widgets de su navegador. Comprender esa relación le ayuda a elegir controles según el comportamiento en lugar de tratar la pantalla como una colección de fragmentos de marcas.
Considere un botón como un objeto con propiedades, eventos, ciclo de vida y compatibilidad con temas. Cambiar el texto de una etiqueta de estado actualiza su estado; Wisej.NET transfiere el cambio relevante al widget. Trabaja con el contrato de control en lugar de reconstruir manualmente el elemento mostrado.
Inicie la selección con la familia de control. Los editores recopilan valores, los contenedores organizan regiones, los controles de datos presentan colecciones y los controles de retroalimentación explican los resultados. Los extensores y las integraciones añaden capacidades. La identificación de la familia reduce la búsqueda antes de comparar las propiedades de control individuales.
Pregunte qué necesita hacer el usuario con los datos. Una jerarquía sugiere TreeView, los registros sugieren DataGridView y las regiones de interfaz reutilizables sugieren UserControl. Busque un widget personalizado solo después de comprobar si un control existente ya se ajusta a la interacción requerida.
Escriba las convenciones antes de agregar más pantallas. Los nombres de roles comerciales, el acoplamiento y anclaje deliberados, el orden del teclado, la retroalimentación y las teclas de apariencia deben ser consistentes en todos los módulos. Una guía de selección hace que esas elecciones sean explicables cuando otro desarrollador amplía la consola.
Cambie el nombre de los controles y controladores según sus funciones para que un lector pueda conectar el código a la pantalla. Reemplace posiciones absolutas con regiones de navegación, comando, estado y contenido. El acoplamiento expresa cómo estas áreas comparten espacio cuando la ventana cambia de tamaño.
Centraliza la navegación para que cada página siga la misma transición. Borre la región de contenido, inserte la nueva página para llenarla y actualice el estado. Si la apertura falla, explique el problema en lugar de dejar al usuario mirando una región en blanco inexplicable.
Utilice las seis páginas de marcador de posición para probar el shell antes de desarrollar todas sus funciones. Cada botón de navegación debe cambiar tanto el contenido como el estado. Esto establece una ruta confiable para cambiar de página que los editores, las pantallas de datos, el panel y la pantalla de widgets posteriores pueden reutilizar.
Entregue el shell de cuatro regiones y seis marcadores de posición navegables con nombres de control significativos. En la guía de selección, explique la familia utilizada para cada región y su función. El objetivo es una base que otro desarrollador pueda ampliar sin tener que adivinar cómo funciona la navegación o el diseño.
- LecturaEjercicio de programación con IA · 20 min
Construye el ejemplo OperationsConsole de este módulo con ChatGPT o Claude a partir de un prompt listo para usar que dirige al modelo a la especificación del módulo, y después revisa, ejecuta y amplía lo que te devuelva — incluso comparándolo con nuestra propia solución de referencia en GitHub.
- CuestionarioEvaluación de conocimientos — Módulo 1 · 10 min · Nota mínima 80%
- Laboratorio prácticoLaboratorio — Shell del catálogo de controles · 45 min
Objetivo: Crea el shell del catálogo de controles de Operations Console: una Page principal con un área de navegación, un área de contenido, un área de comandos y un área de estado; páginas provisionales para Editors, Layouts, Lists and Trees, DataGridView, Dashboard y Widgets; una nota ControlSelection.md dentro del proyecto que indique qué familia de controles usarás para cada área; nombres de controles claros en todo el proyecto; y un área de estado que se actualice cada vez que cambie la navegación. Entregables: Shell principal con áreas de navegación, contenido, comandos y estado; Páginas provisionales para Editors, Layouts, Lists and Trees, DataGridView, Dashboard y Widgets; ControlSelection.md con la familia de controles elegida para cada área; Nombres de controles claros y un área de estado que se actualiza al navegar; Captura de pantalla y una nota breve que explique las decisiones sobre los controles.
Módulo 2: Editores, botones, validación y feedback
Módulo 2 de Dominar la biblioteca de controles — saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados. Lee la guía de la lección y la guía del laboratorio / examen, mira el recorrido guiado sobre la validación del CustomerEditor, supera la evaluación de conocimientos y después completa el laboratorio práctico en Operations Console.
- LecturaGuía de la lección · 14 min
Elegir el editor que corresponde al valor, un modelo de comandos para los botones, validación con ErrorProvider que ayuda en lugar de bloquear, y feedback no bloqueante con Toast y AlertBox. Qué significa esto para un desarrollador de Wisej.NET y cómo leer este módulo.
- LecturaGuía del laboratorio / examen · 10 min
Lo que construirás en el laboratorio práctico, el enfoque sugerido y los entregables requeridos.
- Lección en vídeoDe TextBoxes simples a un CustomerEditor validado · 14 min
De TextBoxes simples a un CustomerEditor validado: un recorrido guiado del Módulo 2, construido paso a paso en Operations Console. Se ejecuta aquí mismo, en el reproductor.
Transcripción de la narración
Compile CustomerEditor para ayudar a los usuarios a ingresar valores inequívocos y recuperarse de errores. Elegir los editores adecuados es sólo el primer paso. La validación, el estado del comando y la retroalimentación clara determinan en conjunto si el formulario es confiable durante un guardado real.
Un campo de texto sin formato acepta representaciones cuyo significado puede no estar claro, especialmente fechas, importes y valores de estado. Utilice la interfaz para evitar errores obvios y explicar los restantes, manteniendo al mismo tiempo las reglas de servicio y datos como protección adicional.
Haga coincidir el control de entrada con el significado del valor. Utilice texto para nombres y correos electrónicos, un selector de fecha para la fecha de inicio y un editor numérico para crédito. En las listas de estado y tipo, muestre texto descriptivo mientras almacena la clave estable.
Elija comentarios de acuerdo con lo que el usuario debe hacer a continuación. ErrorProvider señala correcciones, los consejos ofrecen orientación y un cuadro de mensaje solicita una decisión de bloqueo. Un brindis o una alerta informa el progreso del flujo de trabajo sin exigir un reconocimiento innecesario.
Cree la validación desde el editor: configure sus propiedades, analice los valores escritos, verifique los campos y luego verifique el formulario y el servicio al guardar. En caso de fracaso, mantenga la corrección visible y enfocada. En caso de éxito, confirme la finalización sin interrumpir la siguiente tarea del usuario.
Deje que cada validador nombrado sea dueño del mensaje de su campo. ValidateContent los llama a todos, enfoca la primera entrada no válida y devuelve un resultado que el shell comprende. Esto separa la decisión de validación de la elección de la persona que llama sobre si continuar con el flujo de trabajo.
Mantenga Guardar legible como validación, persistencia, actualización de estado y notificación. Utilice finally para liberar el estado ocupado incluso cuando falla la persistencia. Una frase de fracaso clara y un brindis de éxito sin bloqueo permiten al usuario comprender el resultado sin interpretar excepciones.
Valide el correo electrónico con formato incorrecto y luego corríjalo para verificar que los comentarios se eliminen rápidamente. Durante Guardar, los tres comandos dejan de estar disponibles, lo que evita acciones conflictivas. El brindis final confirma la finalización y deja al usuario libre de continuar sin presionar otro botón.
Entregue CustomerEditor como un control reutilizable con entradas de valor apropiado y validadores con nombre. Guardar, Restablecer y Validar deben respetar su estado de ocupado y, al finalizar, se debe generar un brindis o una alerta. Pruebe las correcciones y la recuperación de fallas con el mismo cuidado que el guardado exitoso.
- LecturaEjercicio de programación con IA · 20 min
Construye el ejemplo OperationsConsole de este módulo con ChatGPT o Claude a partir de un prompt listo para usar que dirige al modelo a la especificación del módulo, y después revisa, ejecuta y amplía lo que te devuelva — incluso comparándolo con nuestra propia solución de referencia en GitHub.
- CuestionarioEvaluación de conocimientos — Módulo 2 · 10 min · Nota mínima 80%
- Laboratorio prácticoLaboratorio — Editor de clientes con validación · 45 min
Objetivo: Construye un UserControl CustomerEditor para Operations Console con campos etiquetados para nombre, email, estado, fecha de inicio, límite de crédito y tipo de cliente, usando el editor adecuado para cada valor en lugar de un TextBox para todo. Añade mensajes de ErrorProvider para campos obligatorios, formato del email, rango del límite de crédito y fechas no válidas; comandos Save, Reset y Validate con comportamiento deshabilitado y ocupado durante el guardado; y un Toast o AlertBox cuando termine la validación o el guardado. Entregables: UserControl CustomerEditor con campos etiquetados para nombre, email, estado, fecha de inicio, límite de crédito y tipo de cliente; Editores adecuados: TextBox, DateTimePicker, NumericUpDown y ComboBox en lugar de texto libre en todas partes; Mensajes de ErrorProvider para campos obligatorios, formato del email, rango del límite de crédito y fechas no válidas; Comandos Save, Reset y Validate con comportamiento deshabilitado y ocupado durante el guardado; Feedback con Toast o AlertBox cuando termine la validación o el guardado.
Módulo 3: Contenedores, diseños, navegación y reutilización
Módulo 3 de Dominar la biblioteca de controles — saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados. Lee la guía de la lección y la guía del laboratorio / examen, mira el recorrido guiado sobre el docking y los UserControls, supera la evaluación de conocimientos y después completa el laboratorio práctico en Operations Console.
- LecturaGuía de la lección · 14 min
Orden de docking, anclaje, diseños de flujo y de tabla, propiedades responsive por perfil de cliente, superficies de navegación y de comandos, y los UserControls como unidad de reutilización. Qué significa esto para un desarrollador de Wisej.NET y cómo leer este módulo.
- LecturaGuía del laboratorio / examen · 10 min
Lo que construirás en el laboratorio práctico, el enfoque sugerido y los entregables requeridos.
- Lección en vídeoDocking, pestañas y el UserControl reutilizable · 14 min
Docking, pestañas y el UserControl reutilizable: un recorrido guiado del Módulo 3, construido paso a paso en Operations Console. Se ejecuta aquí mismo, en el reproductor.
Transcripción de la narración
Reemplace los marcadores de posición de la consola con contenedores que expresen cómo está organizada la interfaz. SplitContainer, TabControl, ToolBar y StatusBar tienen trabajos distintos. Combinarlos brinda a la navegación, los comandos y el contenido un diseño que puede responder a los cambios en el tamaño de las ventanas.
Las coordenadas fijas describen solo un tamaño de ventana. En cambio, las regiones acopladas reclaman bordes y dejan el espacio restante para el contenido. Al cambiar el tamaño de las exposiciones se superponen, revise esas relaciones de diseño en lugar de agregar otro conjunto de correcciones de píxeles a un controlador de cambio de tamaño.
Verifique el orden secundario al acoplar las barras y la región dividida principal. Las barras superior e inferior deben reservar su espacio antes de que la región de relleno utilice el resto. Ancle los controles dentro de esas regiones de acuerdo con cómo deberían responder sus propios bordes.
Utilice SplitContainer cuando el usuario deba controlar la división, pestañas para secciones de pares y barras para comandos y estado. Dirija menús, barras de herramientas, cintas y menús contextuales a través de un modelo de comando para que diferentes puntos de entrada realicen la misma acción de manera consistente.
Comience con el diseño del escritorio y luego asigne valores específicos del perfil solo a las propiedades que deban cambiar. Los diseños de teléfonos y tabletas pueden reutilizar los mismos controles. Cree una pantalla separada sólo cuando el flujo de trabajo real difiera, no simplemente porque la ventana sea más estrecha.
El acoplamiento del caparazón establece su estructura; ApplyNarrowProfile cambia la presentación y el estado de la navegación. Actualice los delegados al comando compartido en lugar de duplicar el comportamiento en el controlador de la barra de herramientas. Esto mantiene las decisiones de diseño separadas de la operación que realiza el comando.
Extraiga el encabezado del registro repetido en un UserControl con título, recuento de registros y un evento de actualización. Mantenga privados sus controles secundarios. Las personas que llaman dependen entonces de lo que hace el encabezado, por lo que un cambio de diseño interno posterior no requiere editar cada pantalla que lo utiliza.
Limite el navegador y observe cómo la misma página cambia de presentación. La navegación colapsa, aparece el botón de menú y el estado informa el perfil estrecho. Esto demuestra la reutilización de un árbol de control en lugar de cambiar a una pantalla móvil mantenida por separado.
Reconstruya el caparazón con los contenedores elegidos, extraiga las regiones repetidas y agregue el perfil estrecho. Documente por qué funciona la orden de atraque y capture ambos anchos. La entrega debe explicar las relaciones de diseño y mostrar que las dos presentaciones siguen siendo utilizables.
- LecturaEjercicio de programación con IA · 20 min
Construye el ejemplo OperationsConsole de este módulo con ChatGPT o Claude a partir de un prompt listo para usar que dirige al modelo a la especificación del módulo, y después revisa, ejecuta y amplía lo que te devuelva — incluso comparándolo con nuestra propia solución de referencia en GitHub.
- CuestionarioEvaluación de conocimientos — Módulo 3 · 10 min · Nota mínima 80%
- Laboratorio prácticoLaboratorio — Shell de Operations Console · 45 min
Objetivo: Sustituye los marcadores provisionales del Módulo 1 por el shell real de Operations Console: un SplitContainer con la navegación a la izquierda, una superficie de detalle TabControl a la derecha, una ToolBar para los comandos frecuentes y una StatusBar que muestre el estado real. Mueve la interfaz repetida a UserControls que expongan solo propiedades y eventos públicos significativos, implementa un diseño para perfil estrecho con propiedades responsive o lógica según el perfil, y documenta tus decisiones de docking y anclaje en LayoutNotes.md. Entregables: Shell de navegación construido con SplitContainer, TabControl, ToolBar y StatusBar; Interfaz repetida movida a UserControls con una superficie pública pequeña; Diseño para perfil estrecho con propiedades responsive o lógica según el perfil; LayoutNotes.md que documenta las decisiones de docking y anclaje; Capturas de pantalla en anchos de escritorio y estrechos.
Módulo 4: Listas, árboles, repetidores y datos jerárquicos
Módulo 4 de Dominar la biblioteca de controles — saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados. Lee la guía de la lección y la guía del laboratorio / examen, mira el recorrido guiado sobre listas virtuales, árboles con carga diferida y carga de detalles, supera la evaluación de conocimientos y después completa el laboratorio práctico en Operations Console.
- LecturaGuía de la lección · 14 min
ComboBox, ListBox, ListView, TreeView, DataRepeater y PropertyGrid; modo virtual de ListView, carga diferida de TreeView, identidad estable de los nodos y carga de detalles dirigida por la selección. Qué significa esto para un desarrollador de Wisej.NET y cómo leer este módulo.
- LecturaGuía del laboratorio / examen · 10 min
Lo que construirás en el laboratorio práctico, el enfoque sugerido y los entregables requeridos.
- Lección en vídeoListas virtuales, árboles con carga diferida y carga de detalles · 14 min
Listas virtuales, árboles con carga diferida y carga de detalles: un recorrido guiado del Módulo 4, construido paso a paso en Operations Console. Se ejecuta aquí mismo, en el reproductor.
Transcripción de la narración
Cree el explorador de documentos con una jerarquía, una lista de documentos y una región de detalles reutilizable. La consola de operaciones debe cargar solo la información que necesita la interacción actual. La carga diferida del árbol y los elementos de la lista virtual hacen que esa división sea visible en el diseño del control.
Elija el control según la forma de la información y cómo los usuarios navegan por ella. Una elección plana, una jerarquía, una colección de tarjetas y una inspección de la propiedad son tareas diferentes. Tratarlos a todos como listas de selección genéricas hace que el mapa del usuario sea más difícil de entender.
Utilice ComboBox para opciones compactas, TreeView para jerarquía y ListView cuando la presentación del artículo sea importante. DataRepeater y PropertyGrid sirven tarjetas e inspección. Planifique identificadores estables y carga diferida con anticipación, para que el crecimiento no fuerce un rediseño de cómo la selección llega a los datos.
El modo virtual declara el tamaño total de la lista sin construir cada elemento de control visible por adelantado. RetrieveVirtualItem crea el elemento solicitado a partir de datos del lado del servidor cuando es necesario, asignando su identificador e imagen juntos. Esto separa cuántos registros existen de cuántos elementos se deben crear ahora.
Cargue solo el primer nivel del árbol, utilizando un marcador de posición secundario para indicar que un nodo se puede expandir. AfterExpand reemplaza ese marcador de posición con niños recuperados por la clave estable en Tag. Luego, el texto mostrado puede cambiar sin cambiar la identidad utilizada por el servicio.
Rastree el identificador seleccionado desde el árbol o la lista hasta la llamada de servicio. BuildTree y la expansión conservan claves estables; La selección carga el modelo con manejo de errores y lo pasa al control de detalle. Ninguna búsqueda de servicios debería depender del texto de una etiqueta mostrada.
Deje que la selección genere un evento, deje que la página recupere los datos y deje que el control de detalles muestre el modelo devuelto. Esto mantiene la región de detalle independiente del acceso al árbol y a la base de datos. Por lo tanto, otra superficie de navegación puede utilizar el mismo control detallado.
Expanda el nodo del cliente y observe que solo se cargan sus hijos. La categoría seleccionada informa cientos de documentos mientras crea solo los elementos de la lista solicitados. Al seleccionar un documento se carga su detalle a través del servicio; Utilice esos límites para razonar unas diez veces más datos.
Entregue el explorador con identificadores de nodos estables, claves de imagen apropiadas y una lista que utilice carga virtual o diferida. Recupere detalles a través de un servicio y pase el modelo a su UserControl. Explique cómo la estrategia de carga de cada control respalda la forma de sus datos.
- LecturaEjercicio de programación con IA · 20 min
Construye el ejemplo OperationsConsole de este módulo con ChatGPT o Claude a partir de un prompt listo para usar que dirige al modelo a la especificación del módulo, y después revisa, ejecuta y amplía lo que te devuelva — incluso comparándolo con nuestra propia solución de referencia en GitHub.
- CuestionarioEvaluación de conocimientos — Módulo 4 · 10 min · Nota mínima 80%
- Laboratorio prácticoLaboratorio — Explorador de documentos · 45 min
Objetivo: Construye el explorador de documentos de Operations Console: un TreeView de categorías o carpetas con un ID estable asociado a cada nodo, un ListView de documentos vinculado al nodo seleccionado, carga diferida o modo virtual en al menos una ruta de lista o árbol, iconos o claves de imagen para los distintos tipos de elemento, y un UserControl de detalle que se carga a través de una capa de servicio o view-model cada vez que cambia la selección. Entregables: TreeView de categorías con un ID estable guardado en cada nodo; ListView de documentos vinculado al nodo seleccionado del árbol; Carga diferida o modo virtual en al menos una ruta de lista o árbol; UserControl de detalle cargado a través de una capa de servicio o view-model al seleccionar; Iconos o claves de imagen para los distintos tipos de elemento.
Módulo 5: Dominio del DataGridView
Módulo 5 de Dominar la biblioteca de controles — saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados. Lee la guía de la lección y la guía del laboratorio / examen, mira el recorrido guiado sobre la cuadrícula Orders, supera la evaluación de conocimientos y después completa el laboratorio práctico en Operations Console.
- LecturaGuía de la lección · 14 min
BindingSource y columnas explícitas, editores personalizados y celdas de comando, modo virtual con CellValueNeeded y una caché en el servidor, y HTML en celdas, controles en celdas y dibujo de celdas usados con responsabilidad. Qué significa esto para un desarrollador de Wisej.NET y cómo leer este módulo.
- LecturaGuía del laboratorio / examen · 10 min
Lo que construirás en el laboratorio práctico, el enfoque sugerido y los entregables requeridos.
- Lección en vídeoLa cuadrícula Orders, de enlazada a virtual · 14 min
La cuadrícula Orders, de enlazada a virtual: un recorrido guiado del Módulo 5, construido paso a paso en Operations Console. Se ejecuta aquí mismo, en el reproductor.
Transcripción de la narración
Construye el grid de Pedidos por etapas para que cada técnica resuelva una necesidad particular. El enlace establece de dónde provienen los valores, el formato los explica y el modo virtual controla la carga de datos de gran tamaño. La combinación correcta permite que la consola de operaciones siga siendo utilizable a medida que crece el volumen de pedidos.
Evalúe una cuadrícula a través del trabajo real del usuario: carga, desplazamiento, edición e interpretación del estado. Es posible que la misma técnica no se ajuste a una pequeña lista editable y a un enorme historial de pedidos. El tamaño de los datos y la tarea deben determinar el diseño antes de agregar el pulido visual.
Separe la población de datos de la generación de columnas. Una cuadrícula puede recibir filas directamente o utilizar una fuente de enlace, independientemente de si las columnas se generan automáticamente. Para la pantalla de producción, vincule el modelo de vista a través de BindingSource y defina columnas explícitamente para controlar su comportamiento.
Defina la columna de estado en lugar de depender de la generación automática. CellFormatting convierte su valor en una insignia de estado codificada, lo que hace que la pantalla sea más fácil de leer. Mantenga la validación fuera de este paso de presentación: una insignia cambia de apariencia, no si el valor subyacente es aceptable.
Elija la presentación celular más liviana que admita la tarea. Los estilos y las marcas formateadas cuestan menos que incorporar controles o pintar de forma personalizada. Un botón para cada fila multiplica el recuento de controles, así que reserve la interacción integrada para la fila que realmente la necesita.
Para conjuntos de datos grandes, declare el recuento de filas y entregue los valores solicitados a través del modo virtual. OrderCache recupera una página cuando faltan datos, en lugar de consultar una celda a la vez. Aplique el filtro primero para que las filas virtuales representen el conjunto de resultados solicitado.
Compare el recuento total de pedidos con la pequeña cantidad de filas transferidas para el área visible. Saltar muy abajo en la cuadrícula solicita otra página, mientras que las insignias y las regiones de filtro y estado permanecen disponibles. El usuario puede navegar por un resultado grande sin tener que construir la interfaz de cada fila por adelantado.
Asigne el editor de calendario a la columna de fecha de vencimiento y verifique ambas direcciones de transferencia de valor. Si el editor no intercambia el valor automáticamente, coordinelo en los eventos de inicio-edición y fin de edición. Un editor personalizado está completo solo cuando el valor elegido regresa correctamente.
Entregue columnas enlazadas explícitas, una celda de estado formateada y un editor o columna de comando significativo. Agregue la caché virtual y las regiones de estado y filtro compuestas. Verifique tanto la edición normal como la navegación en filas distantes para que la interacción de la cuadrícula y las estrategias de carga funcionen juntas.
- LecturaEjercicio de programación con IA · 20 min
Construye el ejemplo OperationsConsole de este módulo con ChatGPT o Claude a partir de un prompt listo para usar que dirige al modelo a la especificación del módulo, y después revisa, ejecuta y amplía lo que te devuelva — incluso comparándolo con nuestra propia solución de referencia en GitHub.
- CuestionarioEvaluación de conocimientos — Módulo 5 · 10 min · Nota mínima 80%
- Laboratorio prácticoLaboratorio — Cuadrícula de pedidos · 45 min
Objetivo: Construye la cuadrícula Orders de Operations Console: un DataGridView enlazado a un BindingSource con columnas explícitas y AutoGenerateColumns bajo control, una celda de estado renderizada con AllowHtml y CellFormatting, un editor personalizado o una columna de comando, una versión en modo virtual o respaldada por caché para la ruta de grandes volúmenes de datos, y una barra compuesta de filtro y estado acoplada dentro o alrededor de la cuadrícula. Entregables: DataGridView Orders con columnas explícitas enlazado a un BindingSource; Celda de estado renderizada con AllowHtml y CellFormatting; Un editor personalizado o una columna de comando; Versión de la cuadrícula en modo virtual o respaldada por caché para grandes volúmenes de datos; Barra compuesta de filtro y estado acoplada dentro o alrededor de la cuadrícula.
Módulo 6: Gráficos, dashboards, contenido, multimedia y documentos
Módulo 6 de Dominar la biblioteca de controles — saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados. Lee la guía de la lección y la guía del laboratorio / examen, mira el recorrido guiado sobre ChartJS, PdfViewer y una sola actualización del dashboard, supera la evaluación de conocimientos y después completa el laboratorio práctico en Operations Console.
- LecturaGuía de la lección · 14 min
Datasets, etiquetas y opciones de ChartJS; indicadores de tipo gauge y ProgressBar; PdfViewer, HtmlPanel, Upload y GoogleMaps teniendo en cuenta la frontera entre navegador y servidor; dashboards actualizados como un único modelo. Qué significa esto para un desarrollador de Wisej.NET y cómo leer este módulo.
- LecturaGuía del laboratorio / examen · 10 min
Lo que construirás en el laboratorio práctico, el enfoque sugerido y los entregables requeridos.
- Lección en vídeoChartJS, PdfViewer y una sola actualización del dashboard · 14 min
ChartJS, PdfViewer y una sola actualización del dashboard: un recorrido guiado del Módulo 6, construido paso a paso en Operations Console. Se ejecuta aquí mismo, en el reproductor.
Transcripción de la narración
Cree el panel en torno a las decisiones que sus datos deberían respaldar. Los gráficos, un indicador de finalización, una vista previa de documentos y la carga pueden compartir una pantalla, pero necesitan una actualización coordinada. La consola de operaciones debería mostrar una instantánea coherente en lugar de actualizaciones visuales no relacionadas.
Comience planteando la pregunta que responde cada región. Una imagen puede ser atractiva y aún así no brindar apoyo útil para la toma de decisiones. Eliminar esa ambigüedad antes de seleccionar un gráfico evita que el tablero se convierta en una colección de gráficos cuyo propósito el usuario debe adivinar.
Haga coincidir la visualización con la información: los patrones necesitan gráficos, los registros individuales necesitan una cuadrícula, un valor de finalización necesita un indicador y la ubicación necesita un mapa. Estas opciones hacen que los datos sean más fáciles de interpretar porque el control responde a la pregunta en lugar de decorar la pantalla.
Agregue ChartJS a través de su paquete y mantenga sus opciones, etiquetas y conjuntos de datos bajo propiedad del servidor. El navegador realiza la representación. Convierta el modelo de vista del panel en datos de gráfico en un solo lugar para que la configuración del gráfico no se extienda entre controladores de eventos no relacionados.
DashboardModel proporciona meses agregados, recuentos y datos de finalización. RefreshDashboard asigna etiquetas y conjuntos de datos juntos, luego actualiza el indicador, la vista previa del documento y la hora. El uso de un modelo mantiene los valores mostrados relacionados con la misma actualización en lugar de mezclar resultados separados.
Respete los límites del navegador al agregar vistas previas, cargas y mapas. La carga envía bytes elegidos explícitamente por el usuario; no le da al servidor acceso para explorar el disco del dispositivo. Desinfecte el marcado incrustado antes de mostrarlo para que el manejo del contenido siga siendo una parte intencional del diseño.
Actualice el panel como una sola operación: solicite datos agregados una vez y actualice los controles juntos. Muestra la carga mientras se ejecuta y una marca de tiempo visible después. La marca de tiempo ayuda a los usuarios a juzgar la actualidad, mientras que la agregación evita transferir registros sin procesar que los gráficos no necesitan.
La actualización de visualización deja de estar disponible mientras el gráfico, el indicador, la vista previa y la marca de tiempo cambian juntos. El indicador de finalización alcanza el setenta y ocho por ciento. Luego cargue el documento seleccionado y observe la vista previa, sígalo, confirmando que el servidor recibió el archivo elegido a través del navegador.
Ofrezca un panel cuyo gráfico y visualización de progreso provengan del mismo modelo de vista. Agregue la vista previa del documento o marcado y cárguelo, con un método RefreshDashboard actualizando la pantalla completa. Explique qué pregunta responde cada región y verifique que la actualización se mantenga coordinada.
- LecturaEjercicio de programación con IA · 20 min
Construye el ejemplo OperationsConsole de este módulo con ChatGPT o Claude a partir de un prompt listo para usar que dirige al modelo a la especificación del módulo, y después revisa, ejecuta y amplía lo que te devuelva — incluso comparándolo con nuestra propia solución de referencia en GitHub.
- CuestionarioEvaluación de conocimientos — Módulo 6 · 10 min · Nota mínima 80%
- Laboratorio prácticoLaboratorio — Dashboard y pestaña de contenido · 45 min
Objetivo: Construye la pestaña de dashboard de Operations Console: un gráfico de líneas o de barras ChartJS cuyas etiquetas y DataSets proceden de un view model del dashboard, una ProgressBar o un indicador de tipo gauge para un valor de estado, una vista previa de contenido con PdfViewer o HtmlPanel, un flujo de Upload, un mapa o un marcador de contenido, y un único método de actualización que refresque todos los controles del dashboard a partir de un solo modelo. Entregables: Pestaña de dashboard con un gráfico de líneas o de barras ChartJS; Etiquetas y DataSets del gráfico construidos a partir de un view model del dashboard; ProgressBar o indicador de tipo gauge para un valor de estado; Vista previa de contenido con PdfViewer o HtmlPanel y un flujo de Upload; Un único método de actualización que refresca todos los controles del dashboard.
Módulo 7: Widgets personalizados, extensiones, temas y proyecto final
Módulo 7 de Dominar la biblioteca de controles — saca el máximo partido a más de 100 controles: cuadrículas, gráficos, árboles y widgets personalizados. Lee la guía de la lección y la guía del laboratorio / examen, mira el recorrido guiado sobre el wrapper Widget, supera la evaluación de conocimientos y después completa el laboratorio práctico en Operations Console.
- LecturaGuía de la lección · 14 min
Controles nativos frente a widgets, componentes, extender providers y paquetes de iconos; los packages del control Widget, InitScript, WidgetEvent y la pasarela CallAsync; temas y documentación; el proyecto final de Operations Console. Qué significa esto para un desarrollador de Wisej.NET y cómo leer este módulo.
- LecturaGuía del laboratorio / examen · 10 min
Lo que construirás en el laboratorio práctico, el enfoque sugerido y los entregables requeridos.
- Lección en vídeoConstruye un wrapper Widget y traza los mensajes · 14 min
Construye un wrapper Widget y traza los mensajes: un recorrido guiado del Módulo 7, construido paso a paso en Operations Console. Se ejecuta aquí mismo, en el reproductor.
Transcripción de la narración
Agregue la capacidad de clasificación por estrellas solo después de confirmar que la biblioteca nativa no proporciona el control necesario. El proyecto final envuelve un widget del navegador al tiempo que preserva la propiedad, los eventos y la temática del Wisej.NET. Esto hace que la integración forme parte del modelo de control de la aplicación en lugar de un script aislado.
Prefiera un control existente cuando ya proporcione el diseñador, el estado del servidor, los eventos y el comportamiento del tema que necesita. La integración personalizada se justifica por la falta de una capacidad del navegador o una función de biblioteca. Deténgase en el nivel más simple que satisfaga el requisito en lugar de reconstruir el soporte ya disponible.
Name la extensión según su responsabilidad antes de elegir su implementación. Un widget, componente, extensor, paquete de iconos y región de interfaz reutilizable no son intercambiables. Esta distinción le impide crear un control personalizado completo cuando un límite de integración más pequeño sería suficiente.
Cargue el script y la hoja de estilo a través de Packages, luego inicialice el objeto del navegador con InitScript. El widget envía cambios significativos a través de fireWidgetEvent y el servidor recibe WidgetEvent. Las llamadas en dirección inversa permiten que el servidor confirme el estado en la implementación del navegador.
El contenedor valida tanto el tipo de evento como su carga útil antes de invocar RatingService. En la devolución de llamada del navegador, conserve la referencia correcta del widget para que el evento regrese a través de la instancia prevista. Estas comprobaciones protegen el límite entre la interacción del navegador y el trabajo confiable del lado del servidor.
Documente el paquete, la propiedad, el evento, la carga útil y el contrato de llamada al servidor junto al código. Cuando el widget falla, inspeccione el orden de los recursos, las rutas, el tiempo de inicialización y la recreación después de la actualización en las herramientas del navegador. Un contrato escrito proporciona a cada pregunta de diagnóstico una respuesta esperada clara.
Click una calificación y siga el intercambio completo. El servidor verifica el rango de uno a cinco, guarda y reconoce la finalización; A continuación, el navegador muestra el estado guardado. La tira de diagnóstico identifica el control, registro, perfil y actualización actual, lo que facilita el seguimiento de ese intercambio.
Pula la integración a través de apariencias de temas o estilos empaquetados, luego verifique el comportamiento responsivo y las etiquetas accesibles. Evite incrustar decisiones visuales en JavaScript que deberían pertenecer al tema. La consola final y su guía deberían explicar por qué cada opción de control cumple con el propósito de su pantalla.
Envíe el widget funcional con sus paquetes, la ruta del evento bidireccional y el contrato documentado como parte de la Consola de operaciones completa. Incluya el guión de demostración y las notas finales. La revisión debe mostrar tanto el resultado de cara al usuario como el razonamiento detrás del límite de integración elegido.
- LecturaEjercicio de programación con IA · 20 min
Construye el ejemplo OperationsConsole de este módulo con ChatGPT o Claude a partir de un prompt listo para usar que dirige al modelo a la especificación del módulo, y después revisa, ejecuta y amplía lo que te devuelva — incluso comparándolo con nuestra propia solución de referencia en GitHub.
- CuestionarioEvaluación de conocimientos — Módulo 7 · 10 min · Nota mínima 80%
- Laboratorio prácticoLaboratorio — Widget personalizado y proyecto final · 45 min
Objetivo: Envuelve un pequeño widget JavaScript de valoración o indicador con el control Widget, o configura un paquete de extensión de Wisej.NET: carga sus packages JavaScript y CSS, lanza un evento del lado del servidor desde el cliente con el patrón de eventos de widget, llama a una función del lado del cliente desde el servidor con CallAsync o Eval, aplícale un tema acorde con la consola y, por último, pule el proyecto final completo de Operations Console y prepara una demo de 5 minutos. Entregables: Pantalla basada en Widget o en una extensión con sus packages JavaScript y CSS cargados; Evento de cliente a servidor lanzado con el patrón de eventos de widget o un evento nativo de la extensión; Llamada de servidor a cliente mediante CallAsync, Eval o la API de la extensión; Contrato cliente/servidor documentado: packages, propiedades, eventos y formato del payload; Proyecto final de Operations Console pulido con un guion de demo de 5 minutos.