July 11, 2015

LINQ pada SPListItem menggunakan C#

Postingan ini akan menjelaskan bagaimana menggunakan LINQ pada SPListItem. Sebagai contoh jika kita ingin melakukan select Distinct atau pun ingin melakukan sorting pada List Item tanpa menggunakan “Collaborative Application Markup Language” (CAML).
Sebagai contoh, kita akan melakukan distinct pada salah column Sharepoint list. Untuk mendapatkan SPListItem dapat dilihat disini

  IEnumerable enumDistinct = ienumAllowance.Select(itm => itm["Title"]).Distinct().OrderBy(itm => itm.ToString());  

Selanjutnya kita juga dapat melakukan pencarian data pada List Item, seperti berikut.

  IEnumerable enumDate = from SPListItem item in ienumAllowance  
                             where (item["Title"].Equals("Value"))  
                             select item;  

Semoga bermanfaat..
Wassalam

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...

July 10, 2015

Konversi string menjadi SPUser pada Sharepoint 2013 menggunakan C#


Untuk programmer yang biasa menggunakan Sharepoint, mungkin pernah mengalami masalah dimana kita memiliki sebuah column pada list dengan tipe "Person and Group". Lalu bagaimana jika kita ingin memasukkan data kedalam list untuk tipe data seperti diatas.
Sebagai contoh kita hanya memiliki inputan (value) dengan tipe data string. Jika kita langsung menggunakan value tersebut untuk memasukkan data kedalam maka proses penambahan data tersebut akan terkendala ataupun akan terjadi error.
Hal yang harus dilakukan adalah dengan cara mengkonversi string tersebut menjadi "SPUser". Berikut method untuk mengubah string menjadi "SPUser".

 private SPUser ConvertToSPUser(SPWeb oWeb,string strUsername)  
   {  
     SPUser user = oWeb.EnsureUser(strUsername);  
     SPFieldUserValue userValue = new SPFieldUserValue(oWeb, user.ID, user.LoginName);  
     return user;  
   }  

Sedangkan untuk menggunakan method diatas dalam memasukkan data kedalam list adalah sebagai berikut.

 using (SPSite site = new SPSite(SPContext.Current.Web.Url))  
         {  
           using (SPWeb web = site.OpenWeb())  
           {  
             SPList list = web.Lists.TryGetList("My List");  
             SPListItem item = list.Items.Add();  
             if (list != null)  
             {  
               DateTime dateMeeting = Convert.ToDateTime(cmbDate.SelectedItem.Text);  
               web.AllowUnsafeUpdates = true;  
               item["TestUser"] = ConvertToSPUser(web, "domain\\Username");  
               item.Update();  
               web.AllowUnsafeUpdates = false;  
             }  
           }  
         }  

Dapat kita lihat pada sintaks diatas dimana kita memanggil method "ConvertToSPUser" pada saat kita akan memasukkan data kedalam list item (item["TestUser"]), dengan mengirimkan value berupa string.

Semoga postingan ini bermanfaat.

Wassalam…