Pregunta

Necesito un diálogo modal 'sí/no' simple para una parte web de SharePoint, y realmente no quiero reinventar la rueda aquí. SharePoint utiliza algunos diálogos modales muy agradables para este propósito, es posible reutilizarlos, en lugar de crear una camada de pequeñas páginas ASPX para la función showModalDialog ()

¿Fue útil?

Solución

En realidad, no tiene que usar Dialog.Master, ya que eso por sí solo no lo ayuda a usar el marco de diálogo 2010. El maestro predeterminado funciona bien porque tiene CSS que oculta la barra de cinta, la navegación y otros componentes de la interfaz de usuario que no desea en un cuadro de diálogo (... a menos que explique los exponga).

Debe ejecutar algún código JavaScript para iniciar el cuadro de diálogo (... iría a la página principal):

function showModalDialog(title) {
    var options = SP.UI.$create_DialogOptions();
    options.title = title;
    // width and height are optional as the framework autosizes the dialog to the content
    options.width = 600;
    options.height = 485;
    options.url = "/_layouts/htmleditor.aspx";
    options.allowMaximize = true;
    // you can specify an optional callback
    options.dialogReturnValueCallback = Function.createDelegate(null, dialogCallback);
    SP.UI.ModalDialog.showModalDialog(options); 
}

Suponiendo que tenga los botones estándar de OK y cancele en su página de diálogo (... puede ser una página de aplicación base de SharePoint creada en un proyecto VS2010), simplemente conectaría los eventos para esos botones y dentro del código que puede emite un JavaScript para cerrar el diálogo y opcionalmente retuan un valor para la página principal:

    void CancelDialog_Click(object sender, EventArgs e)
    {
        if (this.IsDialogMode)
            // in commonModalDialogClose the zero denotes Cancel and a one denotes OK.  The 2nd argument is an optional value to return to the parent page's callback function...assuming one was defined.
            this.ClientScript.RegisterClientScriptBlock(this.GetType(), "DismissRecoverPasswordDialog", "window.frameElement.commonModalDialogClose(0, \"\");", true);
        else
            Response.Redirect(ReferralUrl.Value);
    }

Espero que eso ayude ... no dude en hacer las preguntas de seguimiento de las hormigas que tiene.

Otros consejos

Sí, puedes reutilizarlos. Se trata de usar el archivo .master que SharePoint envía. Página maestra como Dialog.Master está diseñada para páginas que se muestran en la ventana emergente y debe reutilizarlas en lugar de escribir las suyas. Viene con botones OK y cancele y marcadores de posición en los que puede colocar su contenido. En su página, deberá referirlos con el atributo MasterPageFile porque no están en la galería de páginas maestras.

MasterPageFile="~/_layouts/dialog.master"

Y en su código detrás, puede conectar el código al hacer clic en el botón "Aceptar" como este:

protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            ((DialogMaster)this.Page.Master).OkButton.Click += new EventHandler(this.OkButtonClicked);            
        }

Puede cambiar la propiedad de texto de OkButton a "Sí" y cancelar el botón a "No" si eso tiene sentido en su caso.

Reutilizando diálogos emergentesEn lo que respecta a la reutilización, puede usar parámetros de cadena de consulta para manipular el contenido en la página. Por ejemplo, con el botón sí/no, normalmente muestra un mensaje. Puede almacenar el mensaje en archivos de recursos y pasar la clave de recursos en la cadena de consulta a la página de diálogo ASPX para mostrar un mensaje diferente.

Además, si cree que puede reutilizar el cuadro de diálogo de SharePoint existente, puede examinar los parámetros de cadena de consulta que espera y enviar sus propios parámetros y usar las páginas emergentes de SharePoint.

Licenciado bajo: CC-BY-SA con atribución
scroll top