Frage

Ich brauche einen einfachen "Ja/Nein" -Modal-Dialog für einen SharePoint-Web-Teil, und ich möchte das Rad hier nicht wirklich neu erfinden. SharePoint verwendet zu diesem Zweck einige sehr schöne modale Dialoge. Ist es möglich, sie wieder zu verwenden, anstatt einen Wurf mit kleinen ASPX-Seiten für die Funktion showmodaldialog () zu erstellen

War es hilfreich?

Lösung

Sie müssen eigentlich kein Dialog verwenden. Der Standard -Meister funktioniert gut, da er CSS enthält, das die Bandleiste, die Navigation und andere UI -Komponenten verbirgt, die Sie in einem Dialog nicht möchten (... es sei denn, Sie entlarven sie aus).

Sie müssen einen JavaScript -Code ausführen, um den Dialog zu starten (... würde auf der Elternseite gehen):

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

Angenommen, Sie haben die Standardschaltflächen in Ihrer Dialogseite (... kann eine Basis-SharePoint-Anwendungsseite sein, die in einem VS2010-Projekt erstellt wurde), die Ereignisse für diese Schaltflächen und innerhalb der Code-Behind können Sie können Machen Sie ein JavaScript aus, um den Dialog zu schließen und optional einen Wert auf die übergeordnete Seite zu erhalten:

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

Hoffe das hilft ... bitte zögern Sie nicht, Ant-Follow-up-Fragen zu stellen, die Sie haben.

Andere Tipps

Ja, Sie können sie wiederverwenden. Es geht darum, die .master -Datei zu verwenden, die SharePoint ausführt. Masterseite wie Dialog.Master sind für Seiten entwickelt, die im Popup angezeigt werden, und Sie sollten sie wiederverwenden, anstatt Ihre eigenen zu schreiben. Es kommt mit OK- und Stornierungsschaltflächen und Platzhaltern, in denen Sie Ihre Inhalte platzieren können. In Ihrer Seite müssen Sie sie mit MasterPageFile -Attribut verweisen, da sie sich nicht in der Masterseite -Galerie befinden.

MasterPageFile="~/_layouts/dialog.master"

Und in Ihrem Code dahinter können Sie den Code mit der Schaltfläche "OK" wie folgt verkabeln:

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

Sie können die Texteigenschaft von OKButton in "Ja" ändern und die Schaltfläche "Nein" in "Nein" abbrechen, wenn dies in Ihrem Fall Sinn macht.

Wiederverwenden von Popup -DialogenIn Bezug auf die Wiederverwendung können Sie Abfragestöneparameter verwenden, um den Inhalt auf der Seite zu manipulieren. Zum Beispiel zeigen Sie mit Ja/Nein -Schaltfläche normalerweise eine Nachricht an. Sie können die Nachricht in Ressourcendateien speichern und den Ressourcenschlüssel in der Abfragezeichenfolge an die ASPX -Dialogseite übergeben, um verschiedene Nachrichten anzuzeigen.

Auch wenn Sie der Meinung sind, dass Sie das vorhandene SharePoint -Dialogfeld wiederverwenden können, können Sie die von ihm erwarteten Abfragestnparameter untersuchen und Ihre eigenen Parameter senden und die Popup -Seiten von SharePoint verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top