This Blog

Syndication

News

Awards

Microsoft MVP Logo
Grab this badge here!

Certificates

Transcript ID#: 6724122
Brainbench ASP.NET Certificate
 
Brainbench ASP.NET 2.0 Certificate
 
Brainbench .NET Framework 2.0 Certificate

Ahmad Masykur

var myObject = { "languages" : [ "C#", "VB.NET", "ASP.NET", "Javascript", "SDCC", "Assembler" ] }; //

Tabulasi KPU dengan ASP.NET Ajax Client Template

ASP.NET Ajax Client Template merupakan fitur baru dalam ASP.NET Ajax 4 (saat ini masih preview 4). Dengan menggunakan client template kita bisa membuat template layaknya dalam server side ASP.NET. Layout yang kompleks sekalipun dengan mudah dibuat menggunakan template. Dalam tulisan ini saya akan coba jelaskan bagaimana menggunakan client template untuk kasus tabulasi pemilu 2009. Dalam contoh program digunakan beberapa teklonogi antara lain

  1. jQuery
  2. ASP.NET Ajax 4 (MicrosoftAjax.js)
  3. ASP.NET Ajax Template (MicrosoftAjaxTemplate.js)
  4. JSONP proxy (http://jania.pe.kr/aw/moin.cgi/JsonpProxy). Digunakan untuk cross domain call.

Data source pada tulisan ini tidak menggunakan service yang dibuat oleh Pak Tahir melainkan langsung diambil dari website KPU. Website KPU sebenarnya tidak membuka web service khusus yang dapat dipanggil dari luar. Dengan sedikit ketekunan kita bisa menemukan jalan untuk mengambil datanya secara langsung. Ketika kita bukan halaman muka situs tabulasi pemilu milik KPU, kita lihat bahwa situs tersebut menggunakan flash chart. Jika diintip source HTML-nya, kita bisa dapatkan bahwa chart tersebut mengambil data dari alamat http://tnp.kpu.go.id/tab2009/update/dataindex/nasional.txt. Data tersebut berupa JSON string yang dapat kita pake langsung dengan menggunakan JavaScript. Dengan berbekal informasi tersebut kita bisa manfaatkan Url tersebut sebagai dataasource.

Langkah pertama yang perlu kita persiapkan adalah

  1. Download ASP.NET Ajax 4 di sini.
  2. Uraikan file ASP.NET Ajax Preview 4.zip dan ambil file MicrosoftAjax.js dan MicrosoftAjaxTemplate.js ke dalam folder kerja kita.
  3. Buat halaman HTML dan tambahkan referensi script jQuery (http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js) dan kedua file MicrosoftAjax.js dan MicrosoftAjaxTemplate.js

Simak HTML berikut.

<html> <head> <title>Tabulasi KPU dengan Ajax Client Template</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> <script type="text/javascript" src="MicrosoftAjax.js"></script> <script type="text/javascript" src="MicrosoftAjaxTemplates.js"></script> </head> <body xmlns:sys="BLOCKED SCRIPTSys" xmlns:dataview="BLOCKED SCRIPTSys.UI.DataView" sys:activate="*"> <table> <thead> <tr><th>No</th><th>Nama Partai</th><th>Suara</th></tr> <tbody sys:attach="dataview" class="sys-template" dataview:data="{{ d }}"> <tr> <td>{{ no }}</td> <td>{{ name }}</td> <td>{{ value }}</td> </tr> </tbody> </table> <script type="text/javascript"> var d = []; Sys.Observer.makeObservable(d); $(document).ready(function() { $.getJSON('http://jania.pe.kr/u/jsonp.cgi?url=http://tnp.kpu.go.id/tab2009/update/dataindex/nasional.txt&callback=?', function(eArgs) { var i; var e = Sys.Serialization.JavaScriptSerializer.deserialize(eArgs.content); var vals = e.elements[0].values; for(i=0; i < vals.length; i++) { var _d = { no: e.x_axis.labels.labelsIdea, value: valsIdea.top.toString(), name: /\d{1,2}\s([a-zA-Z0-9\s\(\)]*)\x3Cbr\x3E/.exec(valsIdea.tip)[1] }; d.add(_d); } }); }); </script> </body>

Untuk membuat Ajax Client Template pada halaman HTML, yang perlu dipersiapkan adalah

Tambahkan namespace pada BODY tag.
<body xmlns:sys="BLOCKED SCRIPTSys" xmlns:dataview="BLOCKED SCRIPTSys.UI.DataView" sys:activate="*">
Buat template

<table> <thead> <tr><th>No</th><th>Nama Partai</th><th>Suara</th></tr> <tbody sys:attach="dataview" class="sys-template" dataview:data="{{ d }}"> <tr> <td>{{ no }}</td> <td>{{ name }}</td> <td>{{ value }}</td> </tr> </tbody> </table>

Pada template kita butuh mendefinisikan attribute sys:attach="dataview" dan class="sys-template" untuk menggunakan object dataview. Sedangkan dataview:data="{{ d }}" digunakan untuk mengambil datasource dari observer data d. ASP.NET Ajax 4 telah mendukung observer pattern yaitu sebuah object array memiliki event trigger. Ketika ada perubahan data pada array akan memberitahukan kalo ada data yang diubah. Dengan pattern ini, apapun perubahan data akan otomatis merubah pada data yang di-render pada template.

Ambil data dari KPU dengan jQuery

Pada jQuery 1.2 dan versi yang lebih baru telah tersedia method yang digunakan untuk request data cross domain menggunakan teknik JSONP. Pada kenyataannya tidak semudah itu melakukan request cross domain. Tidak semua situs mendukung cross domain scripting. Karena situs KPU tidak menyediakan service resmi dan kita pake trik khusus untuk mendapatkan data dari KPU. Cross domain request ke situs KPU tidaklah mungkin. Untuk mengatasi hal ini diperlukan sebuat situs proxy yang menyediakan padding untuk JSONP. Saya gunakan http://jania.pe.kr/aw/moin.cgi/JsonpProxy sebagai jembatan antara KPU dan client scripting.

var d = []; Sys.Observer.makeObservable(d); $(document).ready(function() { $.getJSON('http://jania.pe.kr/u/jsonp.cgi?url=http://tnp.kpu.go.id/tab2009/update/dataindex/nasional.txt&callback=?', function(eArgs) { var i; var e = Sys.Serialization.JavaScriptSerializer.deserialize(eArgs.content); var vals = e.elements[0].values; for(i=0; i < vals.length; i++) { var _d = { no: e.x_axis.labels.labelsIdea, value: valsIdea.top.toString(), name: /\d{1,2}\s([a-zA-Z0-9\s\(\)]*)\x3Cbr\x3E/.exec(valsIdea.tip)[1] }; d.add(_d); } }); });

Pada javascript di atas, baris pertama adalah deklarasi object d yang digunakan sebagai datasource. Baris berikutnya kita register object d sebagai observer object. Untuk melakukan cross domain request, digunakan method $.getJSON pada jQuery. Hasilnya berupa JSON string yang harus di-deserialize terlebih dahulu ke JSON object dengan method ASP.NET Ajax Sys.Serialization.JavaScriptSerializer.deserialize.

Setelah data diambil, data secara otomatis akan tampil dalam bentuk tabel. Demo kode tersebut dapat dilihat di http://tnp.masykur.web.id/client-template.html

Semoga bermanfaat.

Share this post: | | | |

Comments

 

Ahmad Masykur said:

Menyambung tulisan saya sebelumnya mengenai tabulasi data KPU dengan Ajax Client template . Halaman tersebut

April 21, 2009 1:11 PM
 

Webmaster Crap » Blog Archive » Tabulasi KPU dengan ASP.NET Ajax Client Template - Ahmad Masykur said:

Pingback from  Webmaster Crap  &raquo; Blog Archive   &raquo; Tabulasi KPU dengan ASP.NET Ajax Client Template - Ahmad Masykur

April 22, 2009 7:13 PM