July 11, 2015

Cara mendapatkan User Detail dari Person and Group column pada Sharepoint 2013 menggunakan C#

Pada artikel sebelumnya telah dijelaskan bagaimana melakukan konversi dari string menjadi SPUser. Sehingga kita dapat memasukkan data tersebut kedalam list dengan column yang bertipe “Person and Group”. Sedangkan pada artikel ini akan dijelaskan, bagaimana mengambil user detail pada colum “Person and Group”.
Sebagai ilustrasi, kita memiliki sebuah list dengan salah satu column nya bertipe “Person and Group”. Dan selanjutnya dari data yang ada tersebut akan diambil user detailnya, seperti Nama, Username dan Email. Untuk contoh saya akan menampilkan data-data tersebut kedalam GridView.

Hal yang pertama yang dilakukan adalah dengan membuat sebuah method untuk mengambil data pada sebuah list.

  private IEnumerable TakeListData()  
   {  
     IEnumerable<SPListItem> myListItem = null;  
     using (SPSite site = new SPSite(SPContext.Current.Web.Url))  
     {  
       using (SPWeb web = site.OpenWeb())  
       {  
         SPList list = web.Lists.TryGetList("User Detail");  
         if (list == null) return null ;  
         SPQuery query = new SPQuery();  
         query.Query = "";  
         SPListItemCollection rs = list.GetItems(query);  
         myListItem = rs.OfType<SPListItem>();  
       }  
     }  
     return myListItem;  
   }  

Selanjutnya adalah membuat method, dimana proses konversi dari SPListItem menjadi SPUser.

  private SPUser getUser(SPListItem item)  
   {  
     SPFieldUser field = item.Fields.GetFieldByInternalName("Approver") as SPFieldUser;  
     if (field != null)  
     {  
       SPFieldUserValue fieldValue = field.GetFieldValue(item["Approver"].ToString()) as SPFieldUserValue;  
       if (fieldValue != null)  
         return fieldValue.User;  
     }  
     return null;  
   }  

"Approver" adalah column yang memilki tipe "Person and Group".  Langkah terakhir adalah dengan membuat method untuk menampilkan detail user kedalam GridView.

 private void BindData()  
   {  
     IEnumerable myListItem = TakeListData();  
     DataTable dtApprover = new DataTable();  
     dtApprover.Columns.Add("LoginName", typeof(string));  
     dtApprover.Columns.Add("Name", typeof(string));  
     dtApprover.Columns.Add("Email", typeof(string));  
     foreach (var item in myListItem)  
     {  
       SPUser user = getUser(item);  
       DataRow row = dtApprover.NewRow();  
       row["Name"] = user.Name;  
       row["LoginName"] = user.LoginName;  
       row["Email"] = user.Email;  
       dtApprover.Rows.Add(row);  
     }  
     ASPxGridView1.DataSource = dtApprover;  
     ASPxGridView1.DataBind();  
   }  

Semoga bermanfaat..
Wassalam...

No comments: