Thursday, April 26, 2012

SharePoint Modal Dialog


How to use SharePoint Modal Dialog i.e. SPModalDialog

Here are some of the common functions related with this

To open a dialog use the below function in javascript on the html part of the page

function NewItemDialog(url, title) {
        var options = {
            url: url,
            width: 900,
            height: 700,
            title: title,
            dialogReturnValueCallback: DialogCallback
        };
        SP.UI.ModalDialog.showModalDialog(options);
    }

Here options are used to set the properties of the dialog. Some more properties are  showClose, allowmaximize etc.

Most imaportant thing is the "dialogReturnValueCallback" this property is used to get the dialog return value when the dialog is closed.

I called this function from code behind and setting the url and title described below:

string url = SPContext.Current.Web.Url + "/SitePages/NewForm.aspx?PID=" + tocid; lnknewitem.NavigateUrl = "javascript: NewItemDialog('" + url + "','New Item');";

IN above code snippet i used a link button and set its navigate url programmatically and called the Dialog open function.

And the DialogCallback function is


 function DialogCallback(dialogResult, returnValue) {

     
          if (returnValue == "1") {
            var meesageId = SP.UI.Notify.addNotification("Loading", false);
            SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK);
        }

     
    }

If you want to return value from the modal dialog while closing then use the below function on the modal dialog close function


SP.UI.ModalDialog.commonModalDialogClose(dialogResult, returnVal);

ie.

SP.UI.ModalDialog.commonModalDialogClose(1, "1");

Now when dialogcallback function will fire it will check the return value if it is "1" then it will add notification and refresh the parent page.

you can pass dialogResult, returnVal according to your choice and you can get these values on the parent form using DialogCallback function as described above


To simply close the dialog use the below function on client click event of the button

function CloseForm() {

        window.frameElement.cancelPopUp();

        return false;

    }



If you want to open the new custom page in modal dialog and ribbon is displayed on the modal dialog then use this css trick to hide ribbon

 #s4-ribbonrow
    {
        display: none;
    }








Tuesday, April 10, 2012

A Sandbox Solution,what is and what is not

We all know the limitations of a sandbox solution in SharePoint. A sandbox solution is deployed to a particular site collection's solution gallery rather than to farms's solution gallery as in case of Farm solution. There are also some more limitation in the sandbox solution.

Here I am going to list some of major  limitations:-

1) You can not use any SharePoint control in sandbox solution.e.g spgrid, sharepoint datetime control, people picker etc. You have to rely on the asp.net controls.

2) You do not have access to the layouts folder.

3) You can not use Visual web parts in this rather you can use Visual Studio 2010 SharePoint Power Tools to use visual web parts in sandbox solution.

3) You can not use run with elevated privileges function to override current user's privileges.

4) You can use asp.net file upload control to upload files to SharePoint document library rather you can use silver light client context to upload files.

5) To debug the code you have to attach to the process SPUCWoker process and not to the w3p process as in farm solution.

6) You cannot use SPUtility.SendEmail method to send emails in sandbox solutions

To send email you can follow this useful link

There is SharePoint User Code service that is responsible for the sandbox solution executions.
A sandboxed solution is also not allowed to access anything outside the site collection to which it is deployed. An implication of this is that Features deployed in sandboxed solutions can only be scoped to a site collection or website