Domanda

Ho bisogno di un semplice 'sì / no' finestra di dialogo modale per una parte di SharePoint web, e io non voglia di reinventare la ruota qui. SharePoint utilizza alcune molto belle finestre di dialogo modale per questo scopo, è possibile riutilizzarle, invece di creare una cucciolata di pagine poco aspx per la ShowModalDialog () la funzione

È stato utile?

Soluzione

In realtà non è necessario l'uso dialog.master, come che di per sé non aiuta si utilizza il quadro di dialogo del 2010. il default.master funziona bene perché ha CSS che nasconde la barra a nastro, la navigazione, e gli altri componenti dell'interfaccia utente che non si desidera in una finestra di dialogo (... a meno che non esplicitamente esporli).

È necessario eseguire codice javascript per avviare la finestra di dialogo (... sarebbe andato nella pagina padre):

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); 
}

Supponendo di avere l'ok di serie e Annulla nella tua pagina di dialogo (... può essere una pagina di applicazione di base di SharePoint creata in un progetto VS2010), si era appena il cablaggio del eventi per quei pulsanti e all'interno del code- dietro si può emettere un javascript per chiudere la finestra e, facoltativamente, Retuan un valore alla pagina superiore:

    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);
    }

La speranza che aiuta ... non esitate a fare domande di follow-up di formiche che avete.

Altri suggerimenti

Sì, è possibile riutilizzarli. E 'tutto su come utilizzare il file .Master che le navi di SharePoint. Pagina maestro come dialog.master sono progettati per le pagine che vengono visualizzate nel popup e si dovrebbe riutilizzare loro, piuttosto che scrivere il proprio. Viene fornito con pulsanti OK e Annulla e segnaposto in cui è possibile inserire il vostro contenuto. Nella pagina si dovrà fare riferimento loro con attributo MasterPageFile perché non sono in galleria pagina master.

MasterPageFile="~/_layouts/dialog.master"

E nel vostro dietro il codice, è possibile collegare il codice a click del pulsante "Ok" in questo modo:

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

È possibile modificare la proprietà Text del pulsante OK su "Sì" e il pulsante Annulla per "No" se questo ha un senso nel tuo caso.

Riutilizzo Popup finestre di dialogo Per quanto riguarda il riutilizzo è interessato, è possibile utilizzare parametri stringa di query di manipolare il contenuto della pagina. Ad esempio, con sì / no pulsante in genere si visualizza un messaggio. è possibile memorizzare il messaggio nel file di risorse e trasmettere chiave di risorsa nella query stringa alla pagina di dialogo aspx per visualizzare un messaggio diverso.

Anche se si pensa che si può riutilizzare finestra di dialogo SharePoint esistente, è possibile esaminare i parametri della stringa di query che si aspetta e inviare i propri parametri e le pagine popup utilizzo di SharePoint.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top