Compartir a través de


Referencia de la API de cliente HTML

Este artículo contiene información general sobre las partes generadas de la API de JavaScript para clientes HTML de LightSwitch.

Puntos de entrada para código de cliente HTML

Cada entidad y pantalla, así como la aplicación en sí, exponen los puntos de entrada siguientes, donde puede escribir código de JavaScript personalizado para la aplicación.

Entity Created

Screen Created

Screen Before Apply Changes

Application Save

Screen Methods

Screen Content Render

Screen Content Post Render

Entidad creada

myapp.[EntityName].created = function (entity) {};

Este método se llama cuando se crea una entidad. El objeto entidad crea una propiedad generada para cada una de las propiedades indicadas en Entity Designer.

Suele usarse para establecer valores de propiedades globales para una entidad. En el ejemplo siguiente se establece el valor inicial para la propiedad Asegurado Boolean de una entidad Patient:

myapp.Patient.created = function (entity) {
    entity.Insured = new Boolean();
    entity.Insured = 'true';
};

Para acceder a este punto de entrada, abra la entidad en el diseñador y seleccione la perspectiva ClienteHTML. En la lista Escribir código, elija created.

Pantalla creada

myapp.[ScreenName].created = function (screen) {}

Este método se llama cada vez que se crea una pantalla.

Suele usarse para establecer valores iniciales de campos en una pantalla. En el ejemplo siguiente se establece el valor para el campo Estado en la pantalla AgregarEditarPaciente:

myapp.AddEditPatient.created = function (screen) {
   screen.Patient.State = 'CA'
};

Para acceder a este punto de entrada, abra la pantalla en el diseñador. En la lista Escribir código, elija created.

Pantalla antes de aplicar los cambios

myapp.[ScreenName].beforeApplyChanges = function (screen) {};

Este método se llama cada vez que se inicia una operación de guardar para una pantalla. Si el método devuelve true, se realizará la operación de guardar. Si devuelve false, se cancelará la operación de guardar. Si el método devuelve un objeto WinJs.Promise, la operación de guardar esperará hasta que se complete la promesa (o se produzcan errores) antes de continuar.

Suele usarse para lógica de validación de pantalla. En el ejemplo siguiente se valida el campo PatientName:

myapp.AddEditPatient.beforeApplyChanges = function (screen) {
    if (screen.Patient.PatientName.indexOf('!') != -1) {
        screen.findContentItem("PatientName").validationResults = [
        new msls.ValidationResult(
        screen.Patient.details.properties.PatientName,
        "Patient Name cannot contain the character '!'.")
        ];
        return false;
    }
};

Para acceder a este punto de entrada, abra la pantalla en el diseñador. En la lista Escribir código, seleccione antesDeAplicarCambios.

Guardar aplicación

myapp.onsavechanges = function () {}

Este método se llama cuando se realiza una operación de guardar, después de que el método beforeApplyChanges devuelva true.

Suele usarse para agregar lógica a la operación de guardar (por ejemplo, al guardar varios orígenes de datos). En el ejemplo siguiente se usa el objeto WinJs.Promise para personalizar el comando Guardar integrado.

myapp.onsavechanges = function (e) {
    var promises = [];
    promises.push(myapp.activeDataWorkspace.NorthwindData.saveChanges());
    promises.push(myapp.activeDataWorkspace.ApplicationData.saveChanges());
    e.detail.promise = WinJS.Promise.join(promises);
};

Para acceder a este punto de entrada, abra la pantalla en el diseñador y seleccione Escribir código.

Métodos de pantalla

Cada método de pantalla que aparece en la lista de miembros de pantalla del Diseñador de pantallas dispone de dos métodos: execute y canExecute. El método execute suele usarse para realizar una función cuando el usuario hace clic en un botón. El método puedeEjecutar suele usarse para habilitar o deshabilitar un botón según una condición.

Signatura del método

Comentarios

Ejemplo

myapp.MyScreen.MyMethod_execute = función (pantalla) { };

Se ejecuta al hacer clic en el botón MiMétodo o cuando se llama al método MiPantalla.MiMétodo() mediante código.

En el ejemplo siguiente se elimina el Customer seleccionado en la pantalla BrowseCustomers:

myapp.BrowseCustomers.DeleteSelected_execute = function (screen) {
    screen.getCustomers().then(function (customers) {
        customers.deleteSelected();
    });
};

myapp.MyScreen.MyMethod_canExecute = función (pantalla) { };

Se llama antes de ejecutarse un método. Si esta función devuelve false, el botón MiMétodo estará deshabilitado. Si devuelve true, se habilitará el botón.

En el ejemplo siguiente se deshabilita el botón Delete para un registro que aún no se ha guardado.

myapp.MyScreen.Delete_canExecute = function (screen) {
    return (screen.MyEntity.Id != null);
};

Para acceder a métodos de pantalla, abra el menú contextual del método (en el panel izquierdo del Diseñador de pantallas) y seleccione el método.

Representación de contenido de pantalla

myapp.[ScreenName].[ContentItemName]_render = function (element, contentItem)

Este método se llama al crear una pantalla y solo se aplica en controles personalizados. Suele usarse para representar el contenido de los controles en la pantalla.

element es el elemento HTML del control. Use $(element) para crear un objeto jQuery.

contentItem es un objeto msls.ContentItem que permite acceder a los resultados de valor del elemento, de enlace de datos y de validación.

En el ejemplo siguiente se muestra una OrderDate por cada fila en un control de RowTemplate:

myapp.BrowseOrders.RowTemplate_render = function (element, contentItem) { 
 var orderDate = $("<p>" + contentItem.value.OrderDate + "</p>"); 
 orderDate.appendTo($(element)); 
};

Para acceder al método render, seleccione un control personalizado en el Diseñador de pantallas. En la lista Escribir código, seleccione NombreDeControl_representación.

Representación posterior de contenido de pantalla

myapp.BrowseTable1Items.ContentItem2_postRender = function (element, contentItem) {};

Este método se llama después de crear o actualizar una pantalla. Suele usarse para modificar los contenidos o la apariencia de un control en la pantalla.

element es el elemento HTML del control. Use $(element) para crear un objeto jQuery.

contentItem es un objeto msls.ContentItem que permite acceder a los resultados de valor del elemento, de enlace de datos y de validación.

En el ejemplo siguiente se da formato a un Double para mostrar dos posiciones decimales en un control llamado Unit:

myapp.ViewItems.Unit_postRender = function (element, contentItem) {
    contentItem.dataBind("value", function (value) {
        if (value) {
            $(element).text(value.toFixed(2));
        }
    });
}

Para acceder al método postRender, seleccione un control en el Diseñador de pantallas. En la lista Escribir código, seleccione NombreDeControl_representaciónPosterior.

Modelo de objetos generados

LightSwitch genera un conjunto de API personalizadas basado en activos de proyecto que puede usar al escribir código personalizado en el cliente HTML. Cada origen de datos, tabla, consulta y pantalla genera varios elementos en el conjunto de API.

msls

msls.application

msls.BusinessObject

msls.CollectionChange

msls.CollectionChangeAction

msls.ContentItem

msls.ContentItemKind

msls.DataService

msls.DataServiceQuery

msls.DataWorkspace

msls.Entity

msls.EntityCollection

msls.EntitySet

msls.EntityState

msls.HeightSizingMode

msls.HorizontalAlignment

msls.MergeOperation

msls.MessageBoxButtons

msls.MessageBoxResults

msls.NavigateBackAction

msls.ObjectWithDetails

msls.PageKind

msls.Screen

msls.Sequence

msls.TransitionAnimationLevel

msls.ValidationResult

msls.VisualCollection

msls.WidthSizingMode

msls

(variable global) msls

Miembros

_run

promiseOperation

relativeDates

relativeDateTimeOffsets

render

showMessageBox

showProgress

_ejecutar

_run([homeScreenId : String])

Inicia de forma asincrónica la aplicación de LightSwitch. Este método se llama en el archivo default.html de la aplicación.

Tipo de valor devuelto: WinJS.Promise

operaciónDeCompromiso

promiseOperation(init(operations), [independent: Boolean])

Inicia una nueva operación y devuelve un objeto de compromiso cuando se completa la operación.

Tipo de valor devuelto: WinJS.Promise

Ejemplo:

//Method that imports data from Northwind.svc
myapp.BrowseOrders.ImportOrders_execute = function (screen) { 
    var northwind = "http://services.odata.org/Northwind/Northwind.svc"; 
    return msls.promiseOperation(function (operation) { 
        OData.read({ requestUri: northwind + "/Orders?$top=10", 
            recognizeDates: true, 
            enableJsonpCallback: true }, 
                     function success(result) { 
                         var results = result.results; 
                         for (var i = 0, len = results.length; i < len; i++) { 
                             var importedOrder = screen.Orders.addNew(); 
                             importedOrder.OrderDate = results[i].OrderDate; 
                         }  
                         operation.complete(); 
                     }, 
                     function error(e) { operation.error(e); }); 
    }); 
};

fechasRelativas

relativeDates

Contiene la implementación de las fechas relativas definidas globalmente.

Tipo de valor devuelto: Fecha

Los métodos que comienzan con "finaliza" devuelven la hora 23:59:59. Los métodos que comienzan con "inicia" devuelven la hora 00:00:00.

Método

Valores devueltos

endOfDay()

La fecha y hora de finalización del día actual.

endOfMonth()

La fecha y hora de finalización del mes actual.

endOfQuarter()

La fecha y hora de finalización del trimestre actual.

endOfWeek()

La fecha y hora de finalización de la semana actual.

endOfYear()

La fecha y hora de finalización del año actual.

now()

La fecha y hora actuales.

startOfMonth()

La fecha y hora de inicio del mes actual.

startOfQuarter()

La fecha y hora de inicio del trimestre actual.

startOfWeek()

La fecha y hora de inicio de la semana actual.

startOfYear()

La fecha y hora de inicio del año actual.

today()

La fecha actual con la hora 00:00:00.

El siguiente ejemplo de código devuelve los valores startOfWeek y endOfWeek relacionados de una fecha específica:

myapp.AddEditAppointment.created = function (screen) {
    // Write code here. 
    var currDT = new Date();
    ws = msls.relativeDates.startOfWeek(currDT);
    we = msls.relativeDates.endOfWeek(currDT);
    screen.Appointment.StartDate = ws;
    screen.Appointment.EndDate = we;
}

desfasesDeFechaHoraRelativos

relativeDateTimeOffsets

Contiene la implementación de las fechas relativas definidas globalmente mediante el desfase de la hora universal coordinada (UTC).

Tipo de valor devuelto: Fecha

Los métodos que comienzan con "finaliza" devuelven la hora 23:59:59. Los métodos que comienzan con "inicia" devuelven la hora 00:00:00.

Método

Valores devueltos

endOfDay()

La fecha y hora de finalización del día actual.

endOfMonth()

La fecha y hora de finalización del mes actual.

endOfQuarter()

La fecha y hora de finalización del trimestre actual.

endOfWeek()

La fecha y hora de finalización de la semana actual.

endOfYear()

La fecha y hora de finalización del año actual.

now()

La fecha y hora actuales.

startOfMonth()

La fecha y hora de inicio del mes actual.

startOfQuarter()

La fecha y hora de inicio del trimestre actual.

startOfWeek()

La fecha y hora de inicio de la semana actual.

startOfYear()

La fecha y hora de inicio del año actual.

today()

La fecha actual con la hora 00:00:00.

representar

render(element: HTMLElement, contentItem: msls.ContentItem)

Representa la visualización de un elemento de contenido dentro de un elemento HTML raíz.

Ejemplo:

myapp.BrowseOrders.RowTemplate_render = function (element, contentItem) {
    var orderDate = $("<p>").text(contentItem.value.Customer.CompanyName);
    orderDate.appendTo($(element));
};

mostrarCuadroDeMensaje

showMessageBox(message:String, [options])

Muestra un cuadro de mensaje al usuario.

Tipo de valor devuelto: WinJS.Promise

Se devuelve un compromiso cuando el usuario cierra el cuadro de mensaje. Se puede acceder al resultado del cuadro de mensaje (del tipo msls.MessageBoxResults) mediante el compromiso devuelto.

Opciones:

Parámetro

Descripción

Default

title

Un título para el cuadro de mensaje.

none

buttons

Un valor msls.MessageBoxButtons que especifica los botones que se mostrarán.

ok

Ejemplo:

myapp.AddEditCustomer.Delete_execute = function (screen) {
    msls.showMessageBox("Are You Sure?", {
        title: "Delete Customer",
    buttons: msls.MessageBoxButtons.yesNo
}).then(function (val) {
    if (val == msls.MessageBoxResult.yes) {
        screen.Customer.deleteEntity();
        myapp.commitChanges().then(null, function fail(e) {
            var errmsg = screen.Customer.Name + e.message;
            myapp.cancelChanges().then(function () {

                var resp = msls.showMessageBox(errmsg, {
                    title: "ERROR",
                    buttons: msls.MessageBoxButtons.ok
                });

                throw e;
            });

        });
    }
});
};

mostrarProgreso

showProgress(promise: WinJS.Promise)

Muestra un indicador de progreso que no permite que se use la aplicación hasta que se resuelva o se rechace un compromiso.

Ejemplo:

msls.showProgress(msls.promiseOperation(function (operation) {
        $.getJSON(url, function (data) {
            operation.complete(data); //Operation completed successfully
        }).error(function (args) {
            operation.error(args); //Operation completed with error.
        });
    }) .then(function (result) {
        msls.showMessageBox(result);
    })
);

msls.aplicación

Representa la aplicación de LightSwitch activa.

Nota

El objeto myapp es un acceso directo para msls.application.

Members

activeDataWorkspace

applyChanges

cancelChanges

commitChanges

navigateBack

navigateHome

options

showScreen

áreaDeTrabajoDeDatosActiva

msls.application.activeDataWorkspace

Obtiene el espacio de trabajo actual de la aplicación.

Ejemplo:

msls.application.activeDataWorkspace.ApplicationData.Query1("parameter value")
.execute().then(
        function (results) {
            if (results.results.length >= 0) {
                msls.showMessageBox("Found some records!");
            }
        },
        function (error) {
            alert(error);
        }
    );

aplicarCambios

msls.application.applyChanges()

Aplica de forma asincrónica los cambios pendientes; para ello, combina los cambios anidados en el conjunto de cambios principal o guarda los cambios de nivel superior y permanece en la pantalla actual. Al llamar a applyChanges se guardan todos los cambios del conjunto de cambios actual. Si solo existe un conjunto de cambios, guarda los cambios en el origen de datos. Si el conjunto de cambios actual es un ámbito anidado, confirma los cambios en el conjunto de cambios principal.

Tipo de valor devuelto: WinJS.Promise

Ejemplo:

// Save changes
msls.application.applyChanges().then(null, function fail(e) {

    // If an error occurs, show the error.
    msls.showMessageBox(e.message, { title: e.title }).then(function () {
        // Discard changes
        screen.details.dataWorkspace.ApplicationData.details.discardChanges();
    });
});

cancelarCambios

msls.application.cancelChanges()

Deshace todos los cambios en el conjunto de cambios actual y vuelve a la pantalla anterior.

Tipo de valor devuelto: WinJS.Promise

Ejemplo:

msls.application.commitChanges().then(null, function fail(e) {
    alert(e.message);
    msls.application.cancelChanges();
    throw e;
});

confirmarCambios

msls.application.commitChanges()

Confirma de forma asincrónica los cambios pendientes; para ello, combina los cambios anidados en el conjunto de cambios principal o guarda los cambios de nivel superior y vuelve a la pantalla anterior. Al llamar a commitChanges se guardan todos los cambios del conjunto de cambios actual, igual que en applyChanges. La primera validación se ejecuta en la pantalla y, si no se producen errores, se llama a saveChanges.

Tipo de valor devuelto: WinJS.Promise

Ejemplo:

msls.application.commitChanges().then(null, function fail(e) {
    alert(e.message);
    msls.application.cancelChanges();
    throw e;
});

msls.application. navigateBack()

Pregunta al usuario si quiere confirmar o cancelar los cambios pendientes y, además, si quiere volver a la pantalla anterior o permanecer en la pantalla actual.

Tipo de valor devuelto: WinJS.Promise

msls.application. navigateHome()

Navega de forma asincrónica hasta la pantalla principal.

Tipo de valor devuelto: WinJS.Promise

opciones

msls.application.options

Obtiene los valores de opciones que afectan a la aplicación de LightSwitch. Las opciones deben establecerse en el archivo default.htm, antes de llamar a msls._run.

Opción

Tipo

Descripción

defaultMergeOption

String

Especifica cómo combinar los resultados de las consultas con datos almacenados en caché de forma local. Esto puede establecerse en un valor de msls.MergeOption.

disableUrlScreenParameters

Boolean

Especifica si se usa una clave principal para formar la URL de una instancia de pantalla. La característica de marcadores para pantallas de clientes HTML permite a un usuario copiar la URL de una instancia de pantalla específica y devolverla a dicha instancia posteriormente. La URL se basa parcialmente en la clave principal de la entidad de la pantalla; por ello, si la clave principal contiene información confidencial que no quiere que vean los usuarios, deshabilite la característica de marcadores.

enableModalScrollRegions

Boolean

Indica si se usa una región de desplazamiento independiente dentro de vistas modales, como cuadros de diálogo y selectores. Si esta opción no está habilitada, las vistas modales se ampliarán hasta su tamaño completo, lo que permite al usuario desplazarse en la ventana del explorador principal para ver todo el contenido. Esta opción funciona mejor en algunos dispositivos.

showContentBehindDialog

Boolean

Indica si la pantalla de fondo detrás de un cuadro de diálogo es visible o no. No tiene ningún efecto en dispositivos pequeños, ya que los cuadros de diálogo siempre usan toda la pantalla. Al ocultar la pantalla de fondo en dispositivos grandes, se puede mejorar el rendimiento.

transitionAnimationLevel

String

Especifica el nivel de animación que se produce en las transiciones. Una animación sencilla puede mejorar el rendimiento en algunos dispositivos. Esta opción se puede establecer en el valor de msls.TransitionAnimationLevel.

mostrarPantalla

msls.application.showScreen(screenId, [Array parameters],[options])

Avanza de forma asincrónica hasta una pantalla específica.

Parámetro screenId: nombre modelado de una pantalla o el elemento de modelo que define una pantalla.

Parámetro opcional parameters: matriz de parámetros de pantalla, si corresponde.

Parámetro opcional options: objeto que proporciona una o más de las opciones siguientes:

  • beforeShown: función a la que se llama después de aplicar el comportamiento de límite, pero antes de que se muestre la pantalla.

  • afterClosed: función a la que se llama después de aplicar el comportamiento de límite y de cerrar la pantalla.

Tipo de valor devuelto: WinJS.Promise

Ejemplo:

msls.application.showScreen(AddEditPatient, null, {
    afterClose: function (addEditScreen, navigationAction) {
        if (navigationAction == msls.NavigateBackAction.commit) {
            var newPatient = addEditScreen.Patient;
            msls.application.showViewPatient(newPatient)
        }
    }
});

msls.ObjetoDeNegocios

msls.BusinessObject()

Representa un objeto de negocios.

Miembros

Miembro

Descripción

Tipo

details

Representa los detalles de un objeto de negocios.

msls.BusinessObject.Details

owner

Obtiene el objeto de negocios propietario del objeto de detalles.

msls.BusinessObject

properties

Obtiene el conjunto de objetos de propiedades para las propiedades del propietario.

msls.BusinessObject.Details.PropertySet

msls.CambioDeColección

msls.CollectionChange(action, [items], [oldStartingIndex], [newStartingIndex])

Proporciona datos para el evento de cambio de colección.

Parámetro action: La acción de tipo msls.CollectionChangeAction que causó el evento.

Parámetro opcional items: La matriz de elementos (colección) afectada por la acción.

Parámetro opcional oldStartingIndex: El índice con que se eliminaron los elementos, si corresponde.

Parámetro opcional newStartingIndex: El índice con que se agregaron los elementos, si corresponde.

Miembros

Miembro

Descripción

Tipo

action

Obtiene la descripción de la acción que causó el evento.

String

items

Obtiene la matriz de elementos afectados por la acción.

Object

newStartingIndex

Obtiene el índice con que se agregaron los elementos, si corresponde.

Integer

oldStartingIndex

Obtiene el índice con que se eliminaron los elementos, si corresponde.

Integer

msls.AcciónDeCambioDeColección

msls.CollectionChangeAction

Especifica cómo ha cambiado una colección.

Valor

Descripción

add

Especifica que se agregaron elementos a la colección.

refresh

Especifica que toda la colección ha cambiado.

remove

Especifica que se eliminaron elementos de la colección.

msls.ElementoDeContenido

msls.ContentItem(screenObject, model)

Representa el modelo de vista de un elemento de contenido que se visualiza en una pantalla. ContentItem está disponible como el argumento contentItem en los métodos postRender y render.

Parámetro screenObject: La pantalla (del tipo msls.Screen) propietaria de este elemento de contenido.

Parámetro model: La definición modelada de este elemento de contenido.

Propiedades

application: obtiene el objeto de la aplicación a la que pertenece el elemento. Tipo: msls.application.

bindingPath: obtiene la ruta de acceso de enlace entre la propiedad “datos” (el origen) y la propiedad “valor” (el destino). Tipo: String.

Ejemplo:

// Adds a div element each time the value of ValueControl1 content item changes.
myapp.EditTable1Item.ChangeNotesControl_render = function (element, contentItem) {
    var valueControlContentItem = contentItem.screen.findContentItem("ValueControl1");
    contentItem.dataBind(valueControlContentItem.bindingPath, function (newValue) {
        $(element).append($("<div> Value of control changed at " + msls.relativeDates.now().toString() + "</div>"));
    });
};

children: obtiene los elementos de contenido secundario que son propiedad de este elemento de contenido. Por ejemplo, el contenido secundario de una pestaña serían todos los controles que se muestran cuando la pestaña está activa. Tipo: Matriz de Object.

choiceList: obtiene la lista de opciones estáticas para el valor de este elemento de contenido, si corresponde. Tipo: Matriz.

Ejemplo:

myapp.Screen1.created = function (screen) {
    var myDropDown = screen.findContentItem("Status");
    var myCustomChoices = new Array({ value: "Active", stringValue: "Active" }, { value: "Resolved", stringValue: "Resolved" });

    myDropDown.choiceList = myCustomChoices;
    myDropDown.dispatchChange("choiceList");
    myDropDown.dispatchChange("value");
};

choicesSource: obtiene o establece una colección visual que proporciona un conjunto dinámico de opciones para el valor de este elemento de contenido. Tipo: msls.VisualCollection.

Nota

Solo es válido para el control Selector modal de detalles.

El valor predeterminado es Auto. En el momento de la ejecución, el control crea de forma dinámica una colección visual que contiene todos los elementos del servidor. choicesSource se puede actualizar a una colección visual más específica, como los resultados de una consulta. Es importante recordar que, por motivos de rendimiento, el control solo inicializa la colección visual una vez.

commandItems: obtiene los elementos de contenido de comando que son propiedad de este elemento de contenido. Tipo: Matriz de msls.ContentItem.

controlModel: obtiene el elemento de modelo que escribe el control que visualiza este elemento de contenido. Tipo: Object.

data: obtiene el objeto de datos de origen desde el que se enlazan las propiedades details y value. Tipo: Object.

description: obtiene o establece la descripción de este elemento de contenido. Tipo: String.

details: obtiene el objeto de la propiedad Details para el valor que representa este elemento de contenido mediante una ruta de acceso de enlace derivada de la propiedad bindingPath. Tipo: msls.BusinessObject.Details.Property.

displayError: obtiene el error de visualización que se produjo para el control, si corresponde. Tipo: String.

displayName: obtiene o establece el nombre para mostrar de este elemento de contenido. Tipo: String.

heightSizingMode: obtiene el modo de ajuste del alto para este elemento de contenido. Tipo: msls.HeightSizingMode (String).

horizontalAlignment: obtiene la alineación horizontal de este elemento de contenido. Tipo: msls.HorizontalAlignment (String).

isEnabled: obtiene un valor que indica si debe habilitarse el control de este elemento de contenido. Tipo: Boolean.

isLoading: obtiene un valor que indica si el control de este elemento de contenido debe mostrarse en el estado de carga. Tipo: Boolean.

isReadOnly: obtiene un valor que indica si el control de este elemento de contenido debe ser de solo lectura. Tipo: Boolean.

isVisible: obtiene o establece un valor que indica si el control de este elemento de contenido debe ser visible. Tipo: Boolean.

kind: obtiene el tipo de este elemento de contenido. Tipo: msls.ContentItemKind (String).

Ejemplo:

// Adds description help to each content item
myapp.AddEditCustomer.columns_postRender = function (element, contentItem) {
    // Look for content items with type either 'details' (a navigation property) 
    // or 'value' (non-relationship properties) 
    var contentItemTypes = [];
    contentItemTypes.push(msls.ContentItemKind.details);
    contentItemTypes.push(msls.ContentItemKind.value);
    // Find these content items starting from the children of the 'columns' content item 
    var matchingContentItems = findMatchingContentItems(contentItemTypes, contentItem);
    // Find all LABEL elements that are descendants of the parent element rendering the 
    // 'columns' content item 
    var $matchingElements = $(element).find("label");
    $.each($matchingElements, function (index) {
        // Set the LABEL element to float left 
        $(this).css("float", "left");
        // Create a new A element that will display the '?' link 
        var $help = $("<a href='#'>?</a>");
        $help.css({ "cursor": "pointer", "display": "block", "float": "right" });
        var correspondingContentItem = matchingContentItems[index];
        // Add a click event handler to display the content item description 
        $help.on('click', function (e) {
            e.preventDefault();
            contentItem.screen.HelpText = correspondingContentItem.description;
            contentItem.screen.showPopup('Help');
        });
        // Insert the help element as a sibling after the LABEL element 
        $(this).after($help);
    });
}; 
function findMatchingContentItems(arrayOfTypes, parentContentItem) {
    var matches = [];
    // Return an empty array if no children to look at 
    if (parentContentItem.children.length == 0) {
        return matches;
    }
    $.each(parentContentItem.children, function (i, contentItem) {
        $.each(arrayOfTypes, function (j, type) {
            if (contentItem.kind == type) {
                matches.push(contentItem);
            }
        });
        // Check the child's children for matches 
        matches = matches.concat(findMatchingContentItems(arrayOfTypes, contentItem));
    });
    return matches;
};

model: obtiene el elemento de modelo que describe este elemento de contenido. Tipo: Object.

name: obtiene el nombre de este elemento de contenido. Tipo: String.

onchange: obtiene o establece un controlador para el evento de cambio, al que se llama cada vez que cambia el valor de una propiedad observable en este objeto. Tipo: Function.

pageKind: obtiene el tipo de página (None, Popup, Tab) de este elemento de contenido. Tipo: msls.PageKind (String).

parent: obtiene el elemento de contenido principal propietario de este elemento de contenido. Tipo: msls.ContentItem.

properties: obtiene el conjunto de propiedades específicas del control usadas para configurar la visualización de este elemento de contenido. Tipo: Object.

screen: obtiene la pantalla que produjo este elemento de contenido. Tipo: msls.Screen.

stringValue: obtiene o establece la representación de cadena de la propiedad value. Se recomienda usar esta propiedad en lugar de la propiedad value al obtener un valor que se muestre en la pantalla. Tipo: String.

validationResults: obtiene o establece el conjunto actual de resultados de validación para este elemento de contenido. Tipo: Matriz de msls.ValidationResult.

Incluye todos los resultados que se establecieron de manera explícita en esta propiedad, además de los resultados que se agregaron mediante validación automática o mediante una llamada al método validate(). Los resultados de validación no se mostrarán hasta que el usuario modifique la propiedad en la interfaz de usuario o intente guardarla.

Ejemplo:

screen.findContentItem("OrderDate").validationResults = [new msls.ValidationResult(screen.Order.details.properties.OrderDate, "Invalid date")];

value: obtiene o establece el valor que representa este elemento de contenido. Tipo: Object.

valueModel: obtiene el elemento de modelo que describe el valor de este elemento de contenido. Tipo: Object.

widthSizingMode: obtiene el modo de ajuste del ancho para este elemento de contenido. Tipo: msls.WidthSizingMode (String).

Métodos

addChangeListener: agrega un agente de escucha de eventos de cambio.

addChangeListener(propertyName, listener)

Parámetro propertyName: un nombre de propiedad, o nulo para el evento de cambio global. Tipo: String.

Parámetro listener: la función a la que se llamará cuando se desencadene el evento de cambio. Tipo: Function.

Ejemplo:

myapp.AddEditCustomer.created = function (screen) {
function onPropertyChanged() {
    // Do something.
}
screen.Customer.addChangeListener(
    "Property", onPropertyChanged);

function onEvent() {
    // Do something.
}
screen.Customer.addEventListener(
    "Event", onEvent);

// Clean up when screen is closed.
screen.details.rootContentItem
.handleViewDispose(function () {
    screen.Customer.removeChangeListener(
        "Property", onPropertyChanged);
    screen.Customer.removeEventListener(
        "Event", onEvent);
});
};

dataBind: enlaza a un origen identificado por una ruta de acceso de enlace (por ejemplo, value.unitPrice).

dataBind(bindingPath, callback)

Parámetro bindingPath: una ruta de acceso de enlace delimitada por puntos que describe la ruta de acceso al origen. Tipo: String.

Parámetro callback: función a la que se llama cuando cambia el origen. Tipo: Function.

Ejemplo:

myapp.ViewCustomer.Details_postRender = function (element, contentItem) { 
    contentItem.dataBind("screen.Customer.Name", function (value) { 
        contentItem.screen.details.displayName = value; 
    }); 
};

dispatchChange: desencadena un evento de cambio para una propiedad.

dispatchChange(propertyName)

Parámetro propertyName: nombre de propiedad. Tipo: String.

Ejemplo:

myapp.ViewIncidents.created = function (screen) {
   myapp.activeDataWorkspace.Main
  .Statuses
  .load()
  .then(function onComplete(data) {
      var choice = screen.findContentItem("Status"),
          values = [];
      data.results.forEach(function (status){
          values.push({
              value: status.Id,
              stringValue: status.Title
          });
      });
      choice.choiceList = values;
      choice.dispatchChange("choiceList");
  }, function onError(error) {
      msls.showMessageBox(error, {
          title: "Error loading Statuses from the backend"
      });
  });
}

findItem: busca recursivamente un elemento de contenido que empiece a partir de este elemento de contenido.

findItem(contentItemName)

Parámetro contentItemName: el nombre único de un elemento de contenido. Tipo: String.

Devuelve msls.ContentItem: El elemento de contenido con el nombre especificado, si se encuentra; en caso contrario, un valor de falso.

handleViewDispose: establece un controlador para el evento de eliminación de vista.

handleViewDispose(handler)

Parámetro: handler: función a la que se llama cuando se elimina la vista de este elemento de contenido. Tipo: Function.

Ejemplo:

myapp.AddEditCustomer.created = function (screen) {
function onPropertyChanged() {
    // Do something.
}
screen.Customer.addChangeListener(
    "Property", onPropertyChanged);

function onEvent() {
    // Do something.
}
screen.Customer.addEventListener(
    "Event", onEvent);

// Clean up when screen is closed.
screen.details.rootContentItem
.handleViewDispose(function () {
    screen.Customer.removeChangeListener(
        "Property", onPropertyChanged);
    screen.Customer.removeEventListener(
        "Event", onEvent);
});
};

hasValidationErrors: indica si este elemento de contenido tiene actualmente errores de validación.

hasValidationErrors(recursive)

Parámetro recursive: indica si es necesario comprobar los elementos de contenido secundario. Tipo: Boolean.

Devuelve Boolean: verdadero si hay errores de validación; en caso contrario, falso.

Ejemplo:

if (screen.findContentItem("name").hasValidationErrors()) {
        screen.findContentItem("name").validationResults = [];
    }

removeChangeListener: elimina un agente de escucha de eventos de cambio.

removeChangeListener(propertyName, listener)

Parámetro propertyName: un nombre de propiedad, o nulo para el evento de cambio global. Tipo: String.

Parámetro listener: el agente de escucha de eventos que debe eliminarse. Tipo: Function.

Ejemplo:

myapp.AddEditCustomer.created = function (screen) {
function onPropertyChanged() {
    // Do something.
}
screen.Customer.addChangeListener(
    "Property", onPropertyChanged);

function onEvent() {
    // Do something.
}
screen.Customer.addEventListener(
    "Event", onEvent);

// Clean up when screen is closed.
screen.details.rootContentItem
.handleViewDispose(function () {
    screen.Customer.removeChangeListener(
        "Property", onPropertyChanged);
    screen.Customer.removeEventListener(
        "Event", onEvent);
});
};

validate: ejecuta reglas de validación definidas en la propiedad value y actualiza el valor de la propiedad validationResults.

validate(recursive)

Parámetro opcional recursive: indica si también es necesario validar los elementos de contenido secundario. Si es verdadero, se actualizará la propiedad validationResults en los elementos de contenido secundario. Tipo: Boolean.

msls.TipoDeElementoDeContenido

msls.ContentItemKind

Especifica el tipo de un elemento de contenido.

Valor

Descripción

collection

Especifica un elemento de contenido que enlaza a una colección visual.

command

Especifica un elemento de contenido que enlaza a un comando que invoca un método.

details

Especifica un elemento de contenido que enlaza a un objeto (por ejemplo, una entidad).

group

Especifica un elemento de contenido que contiene otros elementos de contenido.

popup

Especifica el elemento de contenido raíz de un elemento emergente en una pantalla.

screen

Especifica el elemento de contenido raíz de una pantalla.

tab

Especifica el elemento de contenido raíz de una pestaña en una pantalla.

value

Especifica el elemento de contenido que enlaza a un valor (como un número, una fecha o una cadena).

msls.ServicioDeDatos

msls.DataService(dataWorkspace)

Representa un servicio de datos.

Parámetro opcional dataWorkspace: El área de trabajo de datos propietaria de este servicio de datos. Tipo: msls.DataWorkspace.

Miembros

Miembro

Descripción

Tipo

dataService

Obtiene el servicio de datos propietario de este objeto de detalles.

msls.DataService

dataWorkspace

Obtiene el área de trabajo de datos que administra el servicio de datos, si corresponde.

msls.DataWorkspace

details

Representa los detalles de un servicio de datos.

msls.DataService.Details

hasChanges

Obtiene un valor que indica si el servicio de datos tiene cambios (es decir, si existen entidades pendientes de agregar, modificar o eliminar).

Boolean

oncontentchange

Obtiene o establece un controlador para el evento contentchange, al que se llama siempre que se cambia una entidad que sea propiedad del servicio de datos.

Function

owner

Obtiene el servicio de datos propietario de este objeto de detalles.

msls.DataService

properties

Obtiene el conjunto de objetos de propiedad para el servicio de datos.

msls.DataService.Details.PropertySet

msls.ConsultaDeServicioDeDatos

msls.DataServiceQuery(source, rootUri, queryParameters)

Representa una consulta de servicio de datos.

Parámetro source: Un objeto de origen que se puede consultar.

Parámetro opcional rootUri: la URI de solicitud raíz, si es una consulta de servicio de datos raíz (por ejemplo, una consulta de navegación de colección). Tipo: Cadena.

Parámetro opcional queryParameters: Los parámetros de consulta, si corresponde (por ejemplo, una consulta de pantalla basada en una operación de consulta con parámetros). Tipo: String.

msls.ÁreaDeTrabajoDeDatos

msls.DataWorkspace()

Representa un área de trabajo de datos.

Miembros

Miembro

Descripción

Tipo

dataWorkspace

Obtiene el área de trabajo de datos propietaria de este objeto de detalles.

msls.DataWorkspace

details

Representa los detalles de un área de trabajo de datos.

msls.DataWorkspace.Details

hasChanges

Obtiene un valor que indica si el área de trabajo de datos tiene cambios (es decir, si existen entidades pendientes de agregar, modificar o eliminar).

Boolean

hasNestedChangeSets

Obtiene un valor que indica si el área de trabajo de datos tiene conjuntos de cambios anidados.

Boolean

NestedChangeSet(owner)

Representa un conjunto de cambios anidados.

oncontentchange

Obtiene o establece un controlador para el evento contentchange, al que se llama siempre que se cambia una entidad que pertenezca a un servicio de datos que sea propiedad de esta área de trabajo de datos.

Function

owner

Obtiene el área de trabajo de datos propietaria de este objeto de detalles.

msls.DataWorkspace

properties

Obtiene el conjunto de objetos de propiedad para el área de trabajo de datos.

msls.DataWorkspace.Details.PropertySet

msls.Entidad

msls.Entity(entitySet)

Representa una entidad.

Parámetro opcional entitySet: conjunto de entidades que debe contener esta entidad. Tipo: msls.EntitySet.

Miembros

Miembro

Descripción

Tipo

details

Representa los detalles de una entidad.

msls.Entity.Details

entity

Obtiene la entidad propietaria de este objeto de detalles.

msls.Entity

entitySet

Obtiene el conjunto de entidades que contiene la entidad.

msls.EntitySet

entityState

Obtiene el estado (de msls.EntityState) de la entidad.

String

hasEdits

Obtiene un valor que indica si la entidad tiene ediciones (es decir, si se agregó y se ha editado, modificado o eliminado).

Boolean

owner

Obtiene la entidad propietaria de este objeto de detalles.

msls.Entity

Properties

Obtiene el conjunto de objetos de propiedad para la entidad.

msls.Entity.Details.PropertySet

msls.ColecciónDeEntidades

msls.EntityCollection(details, data)

Representa una colección local de entidades.

Parámetro details: el objeto de detalles para la entidad propietaria de esta colección de entidades. Tipo: msls.Entity.Details.

Parámetro data: objeto que proporciona datos de una propiedad. Tipo: Object.

Miembros

Miembro

Descripción

Tipo

oncollectionchange

Obtiene o establece un controlador para el evento de cambio de colección.

Function

msls.ConjuntoDeEntidades

msls.EntitySet(dataService, entry)

Representa un conjunto de entidades.

Parámetro dataService: servicio de datos propietario de este conjunto de entidades. Tipo: msls.DataService.

Parámetro entry: entrada de propiedad de conjunto de entidades.

Miembros

Miembro

Descripción

Tipo

canDelete

Obtiene un valor que indica si se pueden eliminar las entidades de este conjunto de entidades.

Boolean

canInsert

Obtiene un valor que indica si se pueden agregar entidades a este conjunto de entidades.

Boolean

canUpdate

Obtiene un valor que indica si se pueden modificar las entidades de este conjunto de entidades.

Boolean

dataService

Obtiene el servicio de datos propietario de este conjunto de entidades.

msls.DataService

name

Obtiene el nombre de este conjunto de entidades.

String

msls.EstadoDeEntidad

msls.EntityState

Especifica el estado de una entidad.

Valor

Descripción

added

La entidad se ha agregado.

deleted

La entidad se ha marcado como eliminada.

discarded

La entidad se ha descartado.

modified

La entidad se ha modificado.

unchanged

La entidad no se ha modificado.

msls.ModoDeAjusteDelAlto

msls.HeightSizingMode

Especifica cómo se calcula el alto de un elemento de contenido.

Valor

Descripción

FitToContent

Especifica que el alto del elemento de contenido se basa en el alto del contenido.

FixedSize

Especifica que el alto del elemento de contenido es fijo.

StretchToContainer

Especifica que el alto del elemento de contenido se basa en el alto disponible proporcionado por su elemento de contenido principal.

msls.AlineaciónHorizontal

msls.HorizontalAlignment

Especifica la alineación horizontal de un elemento de contenido.

Valor

Descripción

Left

Especifica que el elemento de contenido esté alineado a la izquierda.

Right

Especifica que el elemento de contenido esté alineado a la derecha.

msls.OpciónDeCombinación

msls.MergeOption

Especifica cómo se combinan las entidades que ya están en el área de trabajo de datos con las nuevas entidades que se carguen.

Valor

Descripción

appendOnly

Las entidades que no existen en el área de trabajo de datos se agregan al área de trabajo de datos. Si una entidad ya está en el área de trabajo de datos, los valores actuales y originales de las propiedades de la entidad no se sobrescribirán con valores del origen de datos. Esta es la opción de combinación predeterminada.

unchangedOnly

Las entidades que no existen en el área de trabajo de datos se agregan al área de trabajo de datos. Si una entidad ya está en el área de trabajo de datos y el estado de su entidad es sin cambios, los valores actuales y originales de las propiedades de la entidad no se sobrescribirán con valores del origen de datos.

msls.BotonesDeCuadroDeMensaje

msls.MessageBoxButtons

Especifica los botones que se mostrarán en un cuadro de mensaje.

Valor

Descripción

ok

Especifica el botón Aceptar.

okCancel

Especifica los botones Aceptar y Cancelar.

yesNo

Especifica los botones y No.

yesNoCancel

Especifica los botones , No y Cancelar.

msls.ResultadoDeCuadroDeMensaje

msls.MessageBoxResult

Especifica el botón que se seleccionó de un cuadro de mensaje.

Valor

Descripción

cancel

Especifica que se invocó el botón Cancelar.

no

Especifica que se invocó el botón No.

ok

Especifica que se invocó el botón Aceptar.

yes

Especifica que se invocó el botón .

msls.AcciónDeNavegarAtrás

msls.NavigateBackAction

Especifica la acción que se realizó al retroceder desde una pantalla.

Valor

Descripción

cancel

Especifica que se cancelaron los cambios en la pantalla anterior.

commit

Especifica que en la pantalla anterior se confirmaron los cambios en el origen de datos.

msls.ObjetoConDetalles

msls.ObjectWithDetails

Representa un objeto que contiene un objeto details.

Miembros

Miembro

Descripción

Tipo

details

Representa los detalles de un objeto con detalles.

msls.ObjetoConDetalles.Detalles

onchange

Obtiene o establece un controlador para el evento de cambio, al que se llama cada vez que cambia el valor de una propiedad observable en este objeto.

Function

owner

Representa el objeto propietario de este objeto de detalles.

msls.ObjectWithDetails

properties

Obtiene el conjunto de objetos de propiedades para las propiedades del propietario.

msls.ObjectWithDetails.Details.PropertySet

msls.TipoDePágina

msls.PageKind

Especifica el tipo de página representado por un elemento de contenido.

Valor

Descripción

None

Especifica que el elemento de contenido no representa una página.

Popup

Especifica que el elemento de contenido representa un elemento emergente que se muestra mediante una opción de límite anidado.

Tab

Especifica que el elemento de contenido representa una pestaña que aparece en la barra de pestañas de la pantalla.

msls.Pantalla

Screen(dataWorkspace, modelId, screenParameters)

Representa una pantalla.

Parámetro dataWorkspace: El área de trabajo de datos asociado con la pantalla. Tipo: msls.DataWorkspace.

Parámetro modelId: El identificador del elemento de modelo que define esta pantalla. Tipo: String.

Parámetro opcional screenParameters: Un objeto que contiene parámetros para la pantalla. Tipo: Array.

Miembros

Miembro

Descripción

Tipo

dataWorkspace

Obtiene el área de trabajo de datos que proporciona los datos de la pantalla.

msls.DataWorkspace

description

Obtiene o establece la descripción de la pantalla.

String

details

Representa los detalles de una pantalla.

msls.Screen.Details

displayName

Obtiene o establece el nombre para mostrar de la pantalla.

String

owner

Obtiene la pantalla propietaria de este objeto de detalles.

msls.Screen

pages

Obtiene una matriz de los elementos de contenido raíz de las pestañas y elementos emergentes de la pantalla.

msls.ContentItem

properties

Obtiene el conjunto de objetos de propiedad de la pantalla.

msls.Screen.Details.PropertySet

rootContentItem

Obtiene el elemento de contenido raíz de la pantalla.

msls.ContentItem

saveChangesTo

Obtiene una matriz de los servicios de datos editables de la pantalla.

msls.DataService

screen

Obtiene la pantalla propietaria de este objeto de detalles.

msls.Screen

serverErrors

Obtiene los errores de validación del servidor que se produjeron la última vez que se guardó la pantalla.

msls.ValidationResult

startPage

Obtiene el elemento de contenido raíz de la página de inicio de la pantalla.

msls.ContentItem

msls.Secuencia

msls.Sequence()

Representa una secuencia.

Miembros

Miembro

Descripción

Tipo

Array

Obtiene una matriz que representa esta secuencia.

Object

msls.NivelDeAnimaciónDeTransición

msls.TransitionAnimationLevel

Especifica el nivel de animación que se produce en las transiciones.

Valor

Descripción

Full

Usa animaciones de transición completa.

Simple

Usa animaciones de transición que usan menos recursos de procesador o de potencia.

msls.ResultadoDeValidación

msls.ValidationResult(property, message)

Representa un resultado de validación.

Parámetro property: propiedad que se asocia con el resultado de validación. Tipo: msls.BusinessObject.Details.Property.

Parámetro message: mensaje que describe el error de validación. Tipo: String.

Miembros

Miembro

Descripción

Tipo

message

Obtiene un mensaje que describe el error de validación.

String

property

Obtiene la propiedad donde se produjo el error de validación.

msls.BusinessObject.Details.Property

msls.ColecciónVisual

VisualCollection(screenDetails, loader)

Representa una colección de datos que se muestra en una pantalla.

Parámetro screenDetails: objeto de detalles de pantalla propietario de la colección de pantalla cuyo valor es esta colección. Tipo: msls.Screen.Details.

Parámetro loader: objeto que se usa para cargar datos en la colección.

Miembros

Miembro

Descripción

Tipo

canLoadMore

Obtiene un valor que indica si esta colección puede cargar más páginas de datos.

Boolean

count

Obtiene el número de elementos que contiene actualmente esta colección.

Integer

data

Obtiene los elementos que contiene actualmente esta colección.

Array

isLoaded

Obtiene un valor que indica si esta colección ha cargado una o más páginas de datos.

Boolean

loadError

Obtiene el último error de carga producido, o bien devuelve un valor nulo si no se ha producido ningún error.

String

screen

Obtiene la pantalla propietaria de esta colección.

msls.Screen

selectedItem

Obtiene o establece el elemento seleccionado actualmente.

msls.Entity

state

Obtiene el estado actual (de msls.VisualCollection.State) de esta colección.

String

Valores de VisualCollection.State:

Valor

Descripción

idle

Especifica que la colección visual no está cargando datos actualmente.

loading

Especifica que la colección visual está cargando datos actualmente.

loadingMore

Especifica que la colección visual está cargando más datos actualmente.

msls.ModoDeAjusteDeAncho

msls.WidthSizingMode

Especifica cómo se calcula el ancho de un elemento de contenido.

Valor

Descripción

FitToContent

Especifica que el ancho del elemento de contenido se basa en el ancho de su contenido.

FixedSize

Especifica que el ancho del elemento de contenido es fijo.

StretchToContainer

Especifica que el ancho del elemento de contenido se basa en el ancho disponible proporcionado por su elemento de contenido principal.

Vea también

Tareas

Cómo: Controlar los eventos de pantalla en un cliente móvil para una aplicación LightSwitch

Cómo: Modificar una pantalla HTML usando código

Otros recursos

Pantallas de cliente HTML para aplicaciones LightSwitch