October 2010 - Posts
Holaaaaaa
alelooo.... hahaha
Disela-sela kemacetan dan banjir yang sedang
jadi trending topic, mari sejenak kita lepaskan semua beban itu dengan berbagi
dengan sesama. :D
Kawan, ingatkah dengan SPMetal.exe, tools buat
generate entity yang digunakan buat LINQ to Sharepoint. Nah, sebelom ogut
jelasin tentang tool ini ada baiknya kita sedikit bercerita tentang kehadiran
LINQ 2 Sharepoint ini.
LINQ mulai dikembangin tahun 2003, tujuannya
mempermudah kerjaan developer buat berinteraksi dengan SQL dan XML karena berbeda dengan
model programming sebelumnya. Hasilnya adalah sebuah query language yang bisa
bekerja dengan berbagai sumber data (SQL,
XML, Files, SharePoint Lists).
Di sharepoint 2007, untuk melakukan kuery ke
list biasanya kita pakai CAML. Penggunaannya agak sulit karena terbatas untuk
development di sharepoint doang.CAML
juga tidak punya compile-time checking karena ditulis sebagai string di dalam source code untuk objek SPQuerydan SPSiteDataQuery, karena
alasan itulah sekarang LINQ 2 Sharepoint dikembangkan. LINQ2Sharepoint ini
merepresentasikan sharepoint list ke dalam class-class entity. Class entity ini
bersifat strongly-typed,di dukung intellisense, dan ada compile-time checking.
Berikut alur proses penggunaan LINQ 2
Sharepoint.
![]()
1.
Bikin class entity dengan SPMetal
2.
Deklarasikan data konteks
3.
Dan Membuat kuery-nya
Oke, cukup segitu teorinya, mari kita
hangatkan jari dengan sedikit praktek latihan menggunakan LINQ2Sharepoint ini.
Ikuti langkah berikut.
1.
Bukalah sharepoint site. Buatlah
Sebuah custom list dengan nama "Nilai". Tambah beberapa kolom:
a.
Nama = single teks
b.
Pelajaran = single teks
c.
Nilai = number
![]()
2.
Abis itu isikan dengan data dummy.
3.
Kemudian kita generate class
entity dengan SPMetal, caranya :
Jalankan syntax berikut di
run.
C:\Program Files\Common Files\Microsoft Shared\web server
extensions\14\bin\SPMetal.exe /web:http://site-kamu /code:Entities.cs
/language:csharp
Atau kalau ga mau riweuh pake
SPEntitiesGenerator.
Jalankan toolsnya, masukan
nama site kamu kemudian klik "Check" trus langsung generate deh... haha inget
yah "worksmart" = kerja cepet duit cepet.
![]()
4.
Nanti hasilnya berupa class
entity.
![]()
5.
Sekarang buat project baru di
Visual Studio 2010. File -> New -> Project.
6.
Pilih installed template yang
Sharepoint > 2010. Dan pilih "Visual
Webpart". Kasih nama "TestSPLINQ"
7.
Ok, dan pilih site kamu buat debug
(url site pas buat list diatas).
8.
Kemudian masukan reference. Project -> Add Reference. Pilih tab Browse. Masukin ini C:\Program Files\Common Files\Microsoft
Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Linq.dll
9.
Kemudian masukan class entity
yang digenerate tadi. Project ->
Add Existing Item. Pilih file (.cs) tadi
10.
Buka VisualWebPart1UserControl.ascx masukan kode ini :
<%@AssemblyName="$SharePoint.Project.AssemblyFullName$"%>
<%@AssemblyName="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@RegisterTagprefix="SharePoint"Namespace="Microsoft.SharePoint.WebControls"Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@RegisterTagprefix="Utilities"Namespace="Microsoft.SharePoint.Utilities"Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@RegisterTagprefix="asp"Namespace="System.Web.UI"Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"%>
<%@ImportNamespace="Microsoft.SharePoint"%>
<%@RegisterTagprefix="WebPartPages"Namespace="Microsoft.SharePoint.WebPartPages"Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@ControlLanguage="C#"AutoEventWireup="true"CodeBehind="VisualWebPart1UserControl.ascx.cs"Inherits="TestSPLINQ.VisualWebPart1.VisualWebPart1UserControl"%>
<asp:GridViewID="GridView1"runat="server"BackColor="White"
BorderColor="#336666"BorderStyle="Double"BorderWidth="3px"CellPadding="4"
EnableModelValidation="True"GridLines="Horizontal">
<FooterStyleBackColor="White"ForeColor="#333333"/>
<HeaderStyleBackColor="#336666"Font-Bold="True"ForeColor="White"/>
<PagerStyleBackColor="#336666"ForeColor="White"HorizontalAlign="Center"/>
<RowStyleBackColor="White"ForeColor="#333333"/>
<SelectedRowStyleBackColor="#339966"Font-Bold="True"ForeColor="White"/>
</asp:GridView>
11.
Buka VisualWebPart1.csmasukin kode ini :
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Text;
using System.Linq;
using System.Data;
namespace TestSPLINQ.VisualWebPart1
{
public partial class VisualWebPart1UserControl : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadData();
}
}
private void LoadData()
{
try
{
using (BlackDiamondDataContext dc =
new BlackDiamondDataContext("http://black-diamond"))
{
var q = from itm in dc.Nilai
where itm.Nilai > 50
select new { itm.Title, Pelajaran = itm.Pelajaran, Nilai = itm.Nilai };
DataTable dt = new DataTable("Nilai");
dt.Columns.Add("Nama");
dt.Columns.Add("Pelajaran");
dt.Columns.Add("Nilai");
foreach (var itm in q)
{
string[] Data = { itm.Title, itm.Pelajaran.ToString(), itm.Nilai.ToString() };
dt.Rows.Add(Data);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
catch (Exception x)
{
Response.Write(x.Message);
}
}
}
}
12.
Tulisan BlackDiamondDataContext dan http://black-diamond diatas silakan
disesuaikan dengan data context dan url site punya kamu. Kode diatas berfungsi
untuk menarik data dari list nilai dimana kolom nilai lebih besar dari 50.
Kemudian hasilnya di populate ke gridview.
13. Kemudian compile. Build ->
Build TestSPLINQ.
14.
Dan deploy. Build -> Deploy TestSPLINQ.
15.
Kemudian tambahkan webpart ke page
sharepoint kamu. Site Actions -> Edit
Page. Klik Add a Webpart di web
part zone yang tersedia. Di bagian custom pilihVisualWebPart1. Klik Add
![]()
Tadaaa.... asoooiii....
![]()
Selalu
belajar dan kreatif kawan. :D
Salam.
Holaaaaaa...... :D
Yapps, pada kesempatan yang berbahagia ini
kita berkumpul dan sama-sama belajar apa itu client object model... *kok kayak
pembukaan pidato yah..* wee :P
Kita flashback dulu ke tahun 2007 pas saya
masih muda dulu, sharepoint 2007 di dukung API yang disebut SOM - sharepoint
object model. Nah API ini berjalan di server, sedangkan untuk aplikasi client
kudu make web services untuk mengakses jeroan (list, web, site, dsb) sharepoint.
Apa sih alasannya musti ada client object model ?, ni dia :
1.
User sharepoint 2007 dulu pada
minta tambahan web service lagi buat kebutuhan-kebutuhan lain yang belum
terdapat pada web services yang tersedia. *Nah lho kalau clientnya ngambek
gimana ?*
2.
Client
Object Model menyediakan API yang lebih lengkap daripada
musti bikin tambahan web service lagi.
3.
Menyediakan abstraction layer yang
me-return SharePoint objects, jadi lebih mudah daripada make web services yang return-nya bukan
sharepoint object.
4.
Ini dapat dipake di macem-macem
platform (.NET, ECMAScript,
Silverlight)
Ini area yang didukung oleh API ini :
-
Site
Collections and Sites
-
Lists,
List Items, Views, and List Schemas
-
Files and
Folders
-
Web, List,
and List Item Property Bags
-
Web Parts
-
Security
-
Content
Types
-
Site
Templates and Site Collection Operations
Banyak khaaaannn ? asyiiiikk...
![]()
Nah ini yang ogut bilang tadi, ada ekuivalensi
antar objek yang sejenis di platform berbeda. Jadi buat yang biasa pake SOM
bisa gampanglah pake COM.
![]()
Mekanisme transport data-nya seperti ini.
Semua komunikasi data pada dasarnya lewat Client.svc - WCF Service. Manage client OM = .NET / Silverlight. Kemudian tool code generator menghasilkan client OM assemblies dan
javascript.
Dibawah ini sampel code penggunaannya :
ClientContextclientContext = new ClientContext("http://server");
//Load method
clientContext.Load(clientContext.Web);
clientContext.Load(clientContext.Web.Lists);
//LoadQuery method
var q1 = from list
incontext.Web.Lists
wherelist.Title != null
select list;
var r1 = context.LoadQuery(q1);
Disini ogut ga jelasin cara makenya di
silverlight or ECMA Script, mungkin lain waktu yah...
Kemudian berikut adalah tool sampel yang bisa
dihasilkan dengan Client Object Model ini, namanya "ListToExcel". Simpelnya
kita mo narik data list dari web ke excel. Berikut adalah list sampel yang akan
ditarik :
![]()
Setelah itu kita jalankan tool-nya. Isi site
url dengan sharepoint site kamu, klik "Check". Dan pilih list yang mo di
export.
![]()
Pjit Save dan tadaa... hasilnya...
![]()
Oke, tetap
berkarya dan sehat selalu... :D
Hai hai semua...
Sudah lama tidak posting disini nich, maklum
faktor umur...hahaha...
Oke kawan, masih inget ga dulu pas masih make
sharepoint 2007 ada wrapper/loader web part buatan Jan Tielens di smartpart.codeplex.com
yang memudahkan kita mempublish webpart kita ke sharepoint. Cukup bikin
usercontrol-nya (.ascx) trus langsung dengan mudah diload oleh Smartpart ini ke
webpart page sharepoint. Ya tentunya dengan ini kita bisa "worksmart" alias
kerja cepet duit cepet..holaaa...
Nah, Jangan kecewa, lebih baik kecewe ajah...
Sekarang sudah ada versi ReturnOfSmartpart untuk sharepoint 2010.
Bisa di download di http://smartpart2010.codeplex.com
Tinggal deploy langsung pake, asyiiikkk
khaann....
Oke buat temen-temen yang blom pernah pakai,
coba kita jajal gimana cara pakenya yapp... Ikutin langkah dibawah yah...
Pertama, pastikan kawan udah install
sharepoint 2010 di kompienya yapp. Mau yang versi foundation atau SPS terserah
Anda...
Kedua, download ReturnOfSmartpart buat SP2010.
Ketiga, Deploy Solusi.
a.
Ektrak filenya dan buka proyekna
di Visual Studio 2010. Ubah site url ke sharepoint site kamu. Cth :
http://mycomputer:8080
![]()
b. Kemudian Build and Deploy solutionnya. Build -> Build Smartparts. Build -> Deploy SmartParts.
c.
Kemudian buka web.config di folder
site kamu,C:\inetpub\wwwroot\wss\VirtualDirectories\[siteport]\web.config
Lihat di dalam tag <SafeControls>tambah baris ini : (kalau uda ada di replace aja)
<SafeControlAssembly="SmartParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e07dad8271c64e74"Namespace="SmartPart"TypeName="*"Safe="True"SafeAgainstScript="False" />
Dan cari juga tag "trust" set ke
"Full". Seperti ini :
<trustlevel="Full"originUrl="" />
Keempat, Bikin sampel user control.
a. Buka visual studio 2010, bikin website baru. File -> New -> Web Site.
b.
Pilih aja ASP.NET Empty Website
![]()
c.
Tambah item baru, Website > Add New Item. Pilih Web User Control. Namain aja
"AJAXPage.ascx"
![]()
d.
Buka AJAXPage.ascx, masukin kode
ini :
<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="AJAXPage.ascx.cs"Inherits="AJAXPage"%>
<br/>
<div>
<asp:LabelID="Label1"runat="server"Text="Label"Width="249px"></asp:Label><br/>
<br/>
<asp:LiteralID="Lit1"runat="server"/>
<asp:UpdatePanelID="UpdatePanel1"runat="server">
<ContentTemplate>
<hr/>
<asp:LabelID="Label2"runat="server"Text="Label"Width="249px"></asp:Label>
<asp:LiteralID="Lit2"runat="server"/>
<hr/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTriggerControlID="Button1"EventName="Click"/>
</Triggers>
</asp:UpdatePanel>
<br/>
<asp:ButtonID="Button1"runat="server"Text="Refresh"Width="233px"OnClick="Button1_Click"/></div>
e.
Buka AJAXPage.ascx.cs, masukin
kode ini :
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
public partial class AJAXPage : System.Web.UI.UserControl
{
protectedvoid Page_Load(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
Label2.Text = DateTime.Now.ToString();
Lit1.Text = getImages();
Lit2.Text = getImages();
}
protectedvoid Button1_Click(object sender, EventArgs e)
{
}
privatestring getImages()
{
string HTML = "";
try
{
SPWeb web = null;
SPSecurity.RunWithElevatedPrivileges(delegate
{
HttpContext Context = HttpContext.Current;
web = SPControl.GetContextWeb(Context);
});
string QueryStr = @"<Query></Query>";
SPPictureLibrary list = (SPPictureLibrary)web.Lists["MyPics"];
SPQuery query = newSPQuery();
query.Query = QueryStr;
HTML = "<table><tr>";
SPListItemCollection listItems = list.GetItems(query);
foreach (SPListItem listItem in listItems)
{
string Links = web.Url + "/" + listItem.Url;
string FileName = listItem.Name;
HTML += string.Format(@"<td><img alt=""{0}"" width=""120px"" height=""90px"" src=""{1}"" /></td>", FileName, Links);
}
HTML += "</tr></table>";
}
catch
{
}
return HTML;
}
}
f.
Save, kemudian buat folder baru
namanya "usercontrols" di C:\inetpub\wwwroot\wss\VirtualDirectories\[siteurl]\usercontrols
g.
Kopi file AJAXPage.ascx dan AJAXPage.ascx.cs
ke folder tsb.
Kelima, tampilkan di sharepoint site.
a.
Buka site kamu, dan bikin (http://[site:url]/_layouts/create.aspx):
-
Document Library beri nama "MyForm"
-
Picture Library beri nama "MyPics", tambahkan beberapa gambar ke
dalamnya.
![]()
b.
Bikin web part page beri nama
"TestPart", masukan ke document library "MyForm"
![]()
c.
Buka MyForm -> TestPart.
Tambahkan web part. Site Actions >
Edit Page. Pilih Add a Web Part.
Masukan "Smartparts" dari categories "Custom".
![]()
d.
Buka tool pane. Pada bagian
dropdown smartparts, pilih
"usercontrols_ajaxpage_ascx"
![]()
e.
Tadaaaa... Selamat menikmati.
Mudah khaan ??
![]()
Tetep kreatif dan tampan...
Suwun.