Monthly Archives: May 2013

Get Tasks List Assigned To Logged In User from All SiteCollections

i just tried to get all the tasks assigned to LoggedIn User but there was a problem with UserName like user name sometimes contains Name only like ABC and some time it contains domain like MyDomain/UserName also known as Login Name so i tried these queries to retrieve all the tasks assigned to current user

var query = “<WHERE><Eq><FieldRef Name=’AssignedTo’/><Value Type=’User’ LookupId=’True’>” +  web.CurrentUser.ID + “</Value>”                  “</Eq></Where>”

OR

“<Where><Eq><FieldRef Name=” AssignedTo” /><Value Type=”Integer”><UserID     Type=”Integer” /></Value></Eq> </Where>”

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/c53ee1dc-15a3-4d7e-bacf-72202d559fe2/

but i am unable to do this so finally i tried to get value from list, convert it to SPUser object after getting string value from Particular Field and then comparing this user to logged in user as

private List<MyTask> GetUserTasks()
{
List<MyTask> listItems = new List<MyTask>();
MyTask objTask = null;

//Getting Data from Parent Site
using (SPWeb CurrentWeb = SPContext.Current.Site.OpenWeb())
{
SPList TasksList = CurrentWeb.Lists[“Tasks”];
if (TasksList != null)
{
SPQuery query = new SPQuery();
query.Query = “<Where><Neq><FieldRef Name=’Status’/><Value Type=’Text’>Completed</Value></Neq></Where>”;

SPListItemCollection listItemsColl = TasksList.GetItems(query);
if (listItemsColl.Count > 0)
{
foreach (SPListItem item in listItemsColl)
{
if (item[“AssignedTo”] != null)
{
CurrentWeb.AllowUnsafeUpdates = true;
SPUser user = CurrentWeb.EnsureUser(GetUserNames(item, Convert.ToString(item[“AssignedTo”])));
CurrentWeb.AllowUnsafeUpdates = false;

if (user.LoginName == SPContext.Current.Web.CurrentUser.LoginName)
{
objTask = new MyTask();

objTask.Title = Convert.ToString(item[“Title”]);
objTask.AssignedTo = GetUserNames(item, Convert.ToString(item[“AssignedTo”]));
objTask.DueDate = Convert.ToDateTime(item[“DueDate”]) == DateTime.MinValue ? string.Empty : Convert.ToDateTime(item[“DueDate”]).ToShortDateString();
objTask.Status = Convert.ToString(item[“Status”]);
objTask.URL = CurrentWeb.Url + “/Lists/Tasks/DispForm.aspx?&ID=” + Convert.ToString(item[“ID”]);
objTask.WebTitle = SPContext.Current.Site.RootWeb.Title;

listItems.Add(objTask);
}
}
}
}
}
}

//Getting Data from all Subsites
SPWebCollection SubSites = SPContext.Current.Web.GetSubwebsForCurrentUser();
for (int i = 0; i < SubSites.Count; i++)
{
using (SPSite CurrentSite = new SPSite(SubSites[i].Url))
{
using (SPWeb CurrentWeb = CurrentSite.OpenWeb())
{
SPList TasksList = CurrentWeb.Lists[“Tasks”];
if (TasksList != null)
{
SPQuery SubSitesQuery = new SPQuery();
SubSitesQuery.Query = “<Where><Neq><FieldRef Name=’Status’/><Value Type=’Text’>Completed</Value></Neq></Where>”;

SPListItemCollection listItemsColl = TasksList.GetItems(SubSitesQuery);
if (listItemsColl.Count > 0)
{
foreach (SPListItem item in listItemsColl)
{
if (item[“AssignedTo”] != null)
{
CurrentWeb.AllowUnsafeUpdates = true;
SPUser user = CurrentWeb.EnsureUser(GetUserNames(item, Convert.ToString(item[“AssignedTo”])));
CurrentWeb.AllowUnsafeUpdates = false;

if (user.LoginName == SPContext.Current.Web.CurrentUser.LoginName)
{
objTask = new MyTask();

objTask.Title = Convert.ToString(item[“Title”]);
objTask.AssignedTo = GetUserNames(item, Convert.ToString(item[“AssignedTo”]));
objTask.DueDate = Convert.ToDateTime(item[“DueDate”]) == DateTime.MinValue ? string.Empty : Convert.ToDateTime(item[“DueDate”]).ToShortDateString();
objTask.Status = Convert.ToString(item[“Status”]);
objTask.URL = CurrentWeb.Url + “/Lists/Tasks/DispForm.aspx?&ID=” + Convert.ToString(item[“ID”]);
objTask.WebTitle = SubSites[i].Title;

listItems.Add(objTask);
}
}
}
}
}
}
}
}
return listItems;
}

private string GetUserNames(SPListItem item, string Participants)
{
string AllUsers = string.Empty;
SPFieldUserValueCollection UserColl = new SPFieldUserValueCollection(item.Web, Participants);

foreach (SPFieldUserValue Value in UserColl)
{
AllUsers = AllUsers + Value.User.Name + “,”;
}

if (AllUsers.Length > 0)
{
AllUsers = AllUsers.Substring(0, AllUsers.Length – 1);
}

return AllUsers;
}

 

Get one or more than one user name from SharePoint:PeopleEditor

<SharePoint:PeopleEditor ID=”PEOwner” runat=”server” SelectionSet=”User”
MultiSelect=”true” Width=”450px” Rows=”1″ PlaceButtonsUnderEntityEditor=”false” />

To Get Single Value from SharePoint PeopleEditor control, use below code

// string name = GetSelectedUser(); for single user

private string GetSelectedUser()
{
string SelectedUser = string.Empty;
try
{
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
if (PEOwner.ResolvedEntities.Count > 0)
{
PickerEntity SelectedEntity = (PickerEntity)PEOwner.ResolvedEntities[0];
//SelectedUser = SelectedEntity.Key;
SelectedUser = SelectedEntity.DisplayText;
}
}
}
}
catch { }

return SelectedUser;
}

//List<string> UsersList = GetSelectedUsersList();

private List<string> GetSelectedUsersList()
{
List<string> SelectedUser = new List<string>();
try
{
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
if (PEOwner.ResolvedEntities.Count > 0)
{
string[] AllUsers = PEOwner.CommaSeparatedAccounts.Split(‘,’);
foreach (string item in AllUsers)
{
web.EnsureUser(item);
SPUser User = web.SiteUsers[item];
SelectedUser.Add(User.Name);
}
}
}
}
}
catch { }

return SelectedUser;
}

Get User Names only from Tasks List Field SharePoint

one day i was required to get names only from AssignedTo field of Tasks List Sharepoint, by default they are something like

1;#MYDOMAIN\user1;#4;#MYDOMAIN\user2;#10;#MYDOMAIN\user3

so i did it like

//List<MyTask> tasks = GetUserTasks(); calling below method

private List<MyTask> GetUserTasks()
{
List<MyTask> listItems = new List<MyTask>();
MyTask objTask = null;

using (SPWeb CurrentWeb = SPContext.Current.Site.OpenWeb())
{
SPList TasksList = CurrentWeb.Lists[“Tasks”];
SPQuery query = new SPQuery();

query.Query = “<Where><Eq><FieldRef Name=’AssignedTo’ /><Value Type=’Text’>” +       SPContext.Current.Web.CurrentUser.Name + “</Value></Where>”;

SPListItemCollection listItemsColl = TasksList.GetItems(query);
if (listItemsColl.Count > 0)
{
foreach (SPListItem item in listItemsColl)
{
objTask = new MyTask();

objTask.Title = Convert.ToString(item[“Title”]);
objTask.AssignedTo = GetUserNames(item, Convert.ToString(item[“AssignedTo”]));
objTask.URL = CurrentWeb.Url + “/Lists/Tasks/DispForm.aspx?&ID=” +              Convert.ToString(item[“ID”]);

listItems.Add(objTask);
}

}

}

return listItems;
}

private string GetUserNames(SPListItem item, string Participants)
{
string AllUsers = string.Empty;
SPFieldUserValueCollection UserColl = new SPFieldUserValueCollection(item.Web, Participants);

foreach (SPFieldUserValue Value in UserColl)
{
AllUsers = AllUsers + Value.User.Name + “,”;
}

if (AllUsers.Length > 0)
{
AllUsers = AllUsers.Substring(0, AllUsers.Length – 1);
}

return AllUsers;

}

Bind DropDownList with Statuses of Tasks List SharePoint

Problem: Bind Asp:DropDownList with Status Field of Tasks List SharePoint using C#

Solution: 

private void BindStatusDDL()
{
List<string> Choices = GetChoiceFieldValues(“Tasks”,”Status”);

      if (Choices.Count > 0)
{
ddlTaskStatus.DataSource = Choices;
ddlTaskStatus.DataBind();

           ddlTaskStatus.Items.Insert(0, “All”);
}
}

public List<string> GetChoiceFieldValues(string listName, string fieldName)
{
List<string> fieldList;
SPWeb spWeb = SPContext.Current.Web;
try
{
SPList spList = spWeb.Lists[listName];
SPFieldChoice field = (SPFieldChoice)spList.Fields[fieldName];

fieldList = new List<string>();

foreach (string str in field.Choices)
{
fieldList.Add(str);
}
}
catch (Exception ex)
{
throw ex;
}
return fieldList;
}

SharePoint:PeopleEditor Display Border and Buttons

Problem: display CheckNames and Browse button outside the TextBox and also display border on textbox not on the buttons.

Solution: write this code for control

<SharePoint:PeopleEditor ID=”PEOwner” runat=”server” SelectionSet=”User”
MultiSelect=”true” Width=”450px” Rows=”1″ PlaceButtonsUnderEntityEditor=”false” />

CSS

<style type=”text/css”>
.ms-inputuserfield
{
font-size: 8pt;
font-family: Verdana,sans-serif;
border: 1px solid #a5a5a5;
}

div.ms-inputuserfield a
{
color: #000000;
text-decoration: none;
font-weight: normal;
font-style: normal;
}

div.ms-inputuserfield
{
}
</style>