Wednesday, 5 August 2015

Read values from SharePoint people picker control in visual web part

Below is the code snippet to read values from SharePoint people picker control and update list item

 SPFieldUserValueCollection valueColl = new SPFieldUserValueCollection();

for (int i = 0; i < peoplePickerControlId.ResolvedEntities.Count; i++)
{
       PickerEntity peEntity = (PickerEntity)peoplePickerControlId.ResolvedEntities[i];
       SPUser user = SPContext.Current.Web.EnsureUser(peEntity.Key);
       SPFieldUserValue userVal = new SPFieldUserValue(web, user.ID, user.Name);
       valueColl.Add(userVal);
}

item["User"] = valueColl;

Assign values to people picker control in SharePoint visual webpart

Below is the code snippet to read users from User and group field and assigning the same to the people picker control in form


                SPFieldUserValueCollection trainerColl = new SPFieldUserValueCollection(web, Convert.ToString(ItemColl[0]["User"]));

                List<PickerEntity> trainersEntity = new List<PickerEntity>();

                foreach (SPFieldUserValue spuserval in trainerColl)
                {

                    SPUser userToassign = spuserval.User;

                    PickerEntity entity = new PickerEntity();

                    PeopleEditor pe = new PeopleEditor();

                    entity.EntityData["Account Name"] = spuserval.User.LoginName;
                    entity.EntityData["SPUserId"] = spuserval.User.ID;
                    entity.EntityDa"Email"] = spuserval.User.Email;
                    entity.Key = spuserval.User.LoginName;
                    entity.Description = spuserval.User.LoginName;
                    entity.DisplayText = spuserval.User.Name;

                    entity = pe.ValidateEntity(entity);
                    entity.IsResolved = true;

                    peoplepickerControlId.Entities.Add(entity);
                }

Monday, 3 August 2015

LINQ to find specific value in column in Datatable c#





DataTable dt;
var foundrows = dt.Select("Column_Heading_Name = 'SomeValue'");
if(foundrows.Length > 0)
{
      //do something
}

Open SharePoint page in modal dialog and return value from modal dialog

To open the page in modal dialog in SharePoint we need to add the following code

On Page Load of the parent page add client click event to the button as follows on Page Load event code behind

btnAdd.OnClientClick = "return OpenModalDialog('" + SPContext.Current.Site.RootWeb.Url + "/SitePages/YourPopupPage.aspx');";

In the ascx page of the parent page add the following script

<script type="text/javascript">

    // function is used to open a page in SharePoint Modal Dialog
    function OpenModalDialog(url) {
        // In order to work with the dialog framework, we need to first create the dialog options
        var options = SP.UI.$create_DialogOptions();
        options.url = url; // URL of the Page
       
        options.showClose = true; // Display Close button
        options.allowMaximize = false; // block maximizing
        options.autoSize = true; // Resize as per page content
        options.dialogReturnValueCallback = Function.createDelegate(null, CloseCallback); // Function to capture dialog closed event
        SP.UI.ModalDialog.showModalDialog(options); // Call to open Modal Dialog with above settings
        return false;
    }

    function CloseCallback(result, target) {
        if (result === 1) {
            location.reload(true);
        }
    }

</script>


In the ascx page of the popup page add the following script

<script type="text/javascript">

    function CloseWindow() {
        window.frameElement.commonModalDialogClose(1, 1);
    }

</script>

On button submit click event in server side after applying the logic add the following code at the end

Page.ClientScript.RegisterStartupScript(this.GetType(), "PopupScript", "SP.UI.ModalDialog.commonModalDialogClose(1,1);", true);

On button cancel click event in sercer side add the following code to close the window

this.Page.ClientScript.RegisterStartupScript(this.GetType(), "PopupScript", "SP.UI.ModalDialog.commonModalDialogClose(0, 0);", true);

Grid View buttons not working after Download in SharePoint web part c#

If you are using download button in the GridView and after downloading anything if you are not able to generate any click events on the gridview then add the below code in the Page Load event of the visual web part in SharePoint

string js = @"_spSuppressFormOnSubmitWrapper = true;";
 this.Page.ClientScript.RegisterStartupScript(this.GetType(), "js", js, true);

Get items of folder from SarePoint List c#

Below is the code to read items from a specific folder in SharePoint list

            SPList lst = web.GetList("/Lists/ListName");
            SPFolder folder = lst.RootFolder.SubFolders["FolderName"];
            SPQuery query = new SPQuery();
            query.Folder = folder;
            SPListItemCollection itemColl = lst.GetItems(query);

Clear all asp.net controls in code behind c#

Below is the method to clear controls

protected void btnSubmit_Click(object sender, EventArgs e)
{
          ClearFields(Page.Controls);

}


private void ClearFields(ControlCollection ctrls)
        {
            foreach (Control ctrl in ctrls)
            {
                if (ctrl is TextBox)
                {
                    ((TextBox)ctrl).Text = string.Empty;
                }
                else if (ctrl is DropDownList)
                {
                    ((DropDownList)ctrl).SelectedIndex = 0;
                }
                else if (ctrl is RadioButtonList)
                {
                    ((RadioButtonList)ctrl).ClearSelection();
                }
                else if (ctrl is CheckBoxList)
                {
                    ((CheckBoxList)ctrl).ClearSelection();
                }
                ClearFields(ctrl.Controls);
            }
        }