Sunday 2 February 2014

Use Session in Webpart Sharepoint

to make sure your webpart can call
Page.Session["sessionName"] = "value of session";

you must add this code to web.config sharepoint
<pages enableSessionState="true" enableViewState="true" enableViewStateMac="true" validateRequest="false" pageParserFilterType="Microsoft.SharePoint.ApplicationRuntime.SPPageParserFilter, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=*******" asyncTimeout="7">
and add session to modules
<modules runAllManagedModulesForAllRequests="true">
  <remove name="Session" />
  <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
</modules>

Monday 28 October 2013

Login Function With Query ASP.Net

Untuk membuat fungsi login yang harus diperhatikan adalah koneksi dan apakah pencarian dengan username dan password ditemukan atau tidak. setelah itu mau apa kita apakan setelah login berhasil dan gagal. semuanya dapat kita bentuk dalam kode berikut ini :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
        protected void loginAction(string username, string password) {

            string strConnection = System.Configuration.ConfigurationManager.ConnectionStrings["namakoneksi"].ConnectionString;
            SqlConnection sqlConn = new SqlConnection(strConnection);
            sqlConn.Open();
            SqlCommand sqlCmd = new SqlCommand("select * from Users where username=@username and password=@password", sqlConn);
            sqlCmd.CommandType = CommandType.Text;
            sqlCmd.Parameters.AddWithValue("@username", username);
            sqlCmd.Parameters.AddWithValue("@password", password);
            SqlDataReader reader = sqlCmd.ExecuteReader();
            if (reader.HasRows)
            {
                reader.Read();
                Session["username"] = reader["username"].ToString();
                Response.Redirect("WebForm1.aspx");
            }
            else { 
                //lakukan apa ketika kondisi tidak di temukan
            }
        }

Sunday 27 October 2013

Zipping With Ionic.zip And TransmitFile in ASP.Net

Men-Zip file yang di lakukan oleh web berguna saat kita akan memberikan file dalam jumlah yang banyak, Zip disini berguna agar kita mendownloadnya hanya satu kali. dll yang penulis gunakan saat ini adalah ionic.zip.dll , yang dapat di download di link Ionic ini. Setelah didownload, maka langkah selanjutnya adalah memasukan reference Ionic.zip tersebut kedalam project kita.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//import librarynya kedalam project 
using Ionic.Zip;
string path = Server.MapPath("NamaPathFolder/File");
string[] filenames = Directory.GetFiles(path);
string ZipPath = Server.MapPath("NamaPathZipYangakanDisimpan");
using (ZipFile zip = new ZipFile())
{
 try
 {
  zip.AddFiles(filenames, "NamaFolder");
  //save zip filezip.Save(ZipPath);
  Response.Clear();
  //kirim sebagai responseResponse.ContentType = "Application/zip";
  Response.AppendHeader("content-disposition", "attachment; filename=NamaFileZip-nya");
  Response.TransmitFile(ZipPath);
  Response.Flush();
 }
 finally
 {
  //delete file yang tidak terpakai System.IO.File.Delete(ZipPath);
  string[] files = Directory.GetFiles(NamaFolder/File);
  foreach (string file in files)
  {
   File.SetAttributes(file, FileAttributes.Normal);
   File.Delete(file);
  }
  //delete directory Directory.Delete(NamaFolder/File);
  Response.End();
 }
}

Thursday 24 October 2013

Create Dynamic Item Checkbox on ASPxDropDownEdit DevExpress ASP.Net

DropdownEdit adalah satu control yang disediakan DevExpress agar kita dapat meng-Customize isi dropdownnya, seperti mengisinya dengan checkbox, jadi bisa kita gunakan untuk multipe choice.
langkah yang harus di lakukan adalah memasukan contol ke UI kita dan menambahkan dropdown template didalam ASPxDropDownEdit kita.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<body>
    <form id="form1" runat="server">
    <!--berikan instance name agar dapat dikenali di javascript-->
    <dx:ASPxDropDownEdit ID="ASPxDropDownEdit1" runat="server" ClientInstanceName="checkComboBox">
        <DropDownWindowTemplate>
            <dx:ASPxListBox Width="100%" ID="listBox" ClientInstanceName="checkListBox" SelectionMode="CheckColumn" runat="server">
                <!--berikan perintah apabila selected indexnya berubah-->
                <ClientSideEvents SelectedIndexChanged="OnListBoxSelectionChanged" />
            </dx:ASPxListBox>
        </DropDownWindowTemplate>
    </dx:ASPxDropDownEdit>
    </form>
</body>

selanjutnya adalah mengisi listbox nya dengan data yang kita mau, hal itu kita lakukan pada code behind form yang sedang dikerjakan

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // membuat wadah listdata
            List<ItemData> data = new List<ItemData>();
            for (int i = 0; i < 100; i++)
            {
                // membuat isi data dengan object itemdata
                data.Add(new ItemData(i.ToString()));
            }
            //mencari listbox, yang ada di dalam dropdown template dari aspxdropdownedit1
            ASPxListBox lstbx = (ASPxListBox)ASPxDropDownEdit1.FindControl("listbox");
            lstbx.DataSource = data;
            lstbx.TextField = "RegionName";
            lstbx.ValueField = "RegionName";
            lstbx.DataBind();
        }
    }

    //object data
    public class ItemData
    {
        string regionName;
        public ItemData(string regionName)
        {
            this.regionName = regionName;
        }
        public string RegionName
        {
            get { return regionName; }
        }
    }

sampai disini sudah dapat terlihat bahwa dropdown akan terisi checkbox sebanyak 100 buah, langkah selanjutnya adalah memasukan pilihan ke dalam kolom terpilih dari aspxdropdownedit tersebut dengan bantuan javascript.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<script type="text/javascript">
    // <![CDATA[
    var textSeparator = ", ";
    function OnListBoxSelectionChanged(listBox, args) {
        if (args.index == 0)
            args.isSelected ? listBox.SelectAll() : listBox.UnselectAll();
        UpdateSelectAllItemState();
        UpdateText();
    }
    function UpdateSelectAllItemState() {
        IsAllSelected() ? checkListBox.SelectIndices([0]) : checkListBox.UnselectIndices([0]);
    }
    function IsAllSelected() {
        var selectedDataItemCount = checkListBox.GetItemCount() - (checkListBox.GetItem(0).selected ? 0 : 1);
        return checkListBox.GetSelectedItems().length == selectedDataItemCount;
    }
    function UpdateText() {
        var selectedItems = checkListBox.GetSelectedItems();
        checkComboBox.SetText(GetSelectedItemsText(selectedItems));
    }
    function SynchronizeListBoxValues(dropDown, args) {
        checkListBox.UnselectAll();
        var texts = dropDown.GetText().split(textSeparator);
        var values = GetValuesByTexts(texts);
        checkListBox.SelectValues(values);
        UpdateSelectAllItemState();
        UpdateText(); // for remove non-existing texts
    }
    function GetSelectedItemsText(items) {
        var texts = [];
        for (var i = 0; i < items.length; i++)
            if (items[i].index != 0)
                texts.push(items[i].text);
        return texts.join(textSeparator);
    }
    function GetValuesByTexts(texts) {
        var actualValues = [];
        var item;
        for (var i = 0; i < texts.length; i++) {
            item = checkListBox.FindItemByText(texts[i]);
            if (item != null)
                actualValues.push(item.value);
        }
        return actualValues;
    }
</script>

Tuesday 22 October 2013

Count Workdays Between 2 Dates in T-SQL

Untuk menghitung hari kerja di SQL server dapat di gunakan fungsi sebagai berikut, dimana sabtu dan minggu tidak kita ikut sertakan dalam perhitungannya :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
DECLARE @tanggalDari DATETIME
DECLARE @tanggalSampai DATETIME
SET @tanggalDari = '2013/10/01'
SET @tanggalSampai = '2013/10/31' 

SELECT
((DATEDIFF(dd, @tanggalDari , @tanggalSampai ) + 1)
-(DATEDIFF(wk, @tanggalDari , @tanggalSampai ) * 2)
-(CASE WHEN DATENAME(dw, @tanggalDari ) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @tanggalSampai ) = 'Saturday' THEN 1 ELSE 0 END)) AS WorkDays

Save Image Into Sql Server From ASP.Net

Ada beberapa alternatif jika kita ingin menyimpan image di database, yang pertama adalah dengan menyimpannya langsung sebagai binary data atau kita hanya menyimpan linknya saja di database.
yang akan di bahas kali ini adalah cara menyimpan image di SQL-server lewat behind code ASP.net.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
//buat table pada database sql server
CREATE TABLE [dbo].[TestUploadImage](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[images] [varbinary](max) NULL,
CONSTRAINT [PK_TestUploadImage] PRIMARY KEY CLUSTERED 
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


1
2
3
4
5
6
7
8
//rubah image menjadi bentuk array byte
byte[] imageData = ReadFile(path-imagenya);
SqlConnection conn = new SqlConnection(koneksi-database-nya);
SqlCommand SqlCom = new SqlCommand("INSERT INTO dbo.TestUploadImage( name, images ) VALUES ( 'image pertama', @imgByte)", conn);
SqlCom.Parameters.Add(new SqlParameter("@imgByte", (object)imageData));
conn.Open();
SqlCom.ExecuteNonQuery();
conn.Close();

Friday 18 October 2013

Login With Facebook API In Our Web Application

Banyak orang yang diuntungkan dengan hadirnya facebook, selain sebagai media sosial facebook juga banyak sekali digunakan untuk bermacam-macam kepentingan, seperti halnya periklanan, pengembangan, ataupun sarana yang lainnya. Untuk kali ini penulis ingin berbagi tentang layanan facebook yang bisa kita ambil keuntungannya, yaitu adalah Login Facebook API. Singkatnya adalah, kita menggunakan authentifikasi user dengan mengambil login dari facebook untuk aplikasi web yang kita buat, jadi kita tidak usah repot-repot membuat database user untuk menyimpan data detail user diaplikasi kita. langkahnya sebagai berikut :

  • 1. Login terlebih dahulu di https://developers.facebook.com
  • 2. Menuju ke menu App dan daftarkan sebagai developer
  • 3. Buat aplikasi baru dengan klik create new app, isi appication name
Create New App
Create New App
  •  4. Setelah itu akan muncul dashboard dari application yang kita daftarkan, beserta ID dan kode rahasianya  pada dashboard ada beberapa yang harus kita isi secara benar, yaitu adalah "App Domain" dan "Website With Facebook Login". Isi keduanya dengan domain dimana aplikasi web kita berada, misalnya "http://localhost/FB-API/index.html" nanti secara otomatis akan menjadi "localhost".
Dashboard Web Application
Dashboard Facebook Appication
  • 5. langkah selanjutnya adalah menyiapkan halaman login tersebut. didalam contoh yang kita masukan adalah ada pada index.html
untuk kode HTML-nya : 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<html>
<head>

<!-- load main library JQuery-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<!-- load facebook API -->
<script src="//connect.facebook.net/en_US/all.js"></script>

</head>
<body>

<!-- facebook button -->
<fb:login-button show-faces="true" width="200" max-rows="1"></fb:login-button>;

</body>
</html>

dan untuk kode javascript-nya :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!--javascript untuk authentifikasi aplikasi kita dengan aplikasi yang di daftarkan di facebook-->
<script>
//load SDK facebook-nya
(function(d){
 var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
 if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = "//connect.facebook.net/en_US/all.js";
 ref.parentNode.insertBefore(js, ref);
}(document));

//initialize awal dan pengecekan ID applikasi
window.fbAsyncInit = function() {
 FB.init({
 appId : 'xxxxxxxxxxxxxxx', // App ID
 channelUrl : 'http://localhost/FB-API/index.html', // Channel
 Filestatus : true, // cek login
 statuscookie : true, // enable cookies to allow the server to access the
 sessionxfbml : true // parse XFBML
 });

 //kondisi authentifikasi apabila user terdaftar atau tidak 
 FB.Event.subscribe('auth.authResponseChange', function(response) {
 //status apabila sudah valid atau belum
 if (response.status === 'connected') {
  //fungsi setelah login valid
  testAPI();
 } else if (response.status === 'not_authorized') {
  FB.login();
 } else {
  FB.login();
 }
 });
};

//fungsi setelah login valid
function testAPI() {
 console.log('Welcome! Fetching your information.... ');
 FB.api('/me', function(response) {
  console.log('Good to see you, ' + response.name + '.');
 });
}
</script>

  • 6. Lalu save, apabila aplikasi berhasil maka button login dari facebook akan muncul di aplikasi kita 
Facebook Login Button
Facebook Login Button
Facebook Login form popup
Facebook Login form popup
Success facebook login
Success facebook login