Digital Stamping

Hai, baru nulis lagi neh, mumpung ada kesempatan dan mumpung lagi mood nulis..hehe. Well, seperti judulnya, gw bakalan ngebahas tentang “Digital Stamping”. Dalam hal ini, yang mau di-stamp adalah dokumen PDF.

Seperti kita ketahui, jaman sekarang tuh teknologi kita identik dgn kosep ‘paperless’. Jadinya untuk keperluan dokumentasi pun yang biasanya diprint trus minta ditandatangani, skarang diganti dengan digital stamping. Konsepnya simpel aja, tinggal bikin dokumen trus diprint ato convert ke pdf. Stelah itu tinggal masukkin area/field buat digital stamping-nya, tentunya butuh ‘adobe acrobat professional’ supaya bisa melakukan hal itu. Udah deh, tinggal masukin aja image tanda tangannya.

Bagaimana hal itu bisa dilakukan secara programming? Lanjutkan membaca

Sorting Algorithm

Jadi inget jaman kuliah dulu, ketika gw diperkenalkan sama yang namanya ‘sorting algorithm’. Yang paling gw inget sih bubbleshort…

Nah, barusan dengan sedikit keisengan, gw menemukan page dari sebuah website yang memperlihatkan animasi bagaimana algoritma-algoritma pengurutan itu bekerja. Berikut adalah website-nya.

Postback dari Javascript?

Emagnya bisa gitu? Setau gw, javascript itu bisa reload, back, close pada web page. Trus klo mw postback gimana caranya ya? Ada gaksih perintahnya?

Hmm, kayaknya ga ada d… Trus klo butuh postback yg trigernya javascript gimana dong. Contoh, gw buka popup, nah pas popup itu close, gw butuh postback pada page loadernya ato page induknya. Gimana dong?

Dari pada gak bisa, ya gw pake tuh hacking code. Gimana? Gw bikin fake button trus gw tambahin di event clicknya.. misalkan OnClick = “FakeButton_Click()”. Pada prosedure FakeButton_Click(), gw gak naro code apa2, toh yg gw butuhin cuman event postbacknya…. Trus manggilnya gimana? Ya gw tambahin code di javascript popupnya, sebelum close popup tentunya…. Gw panggil event click button pada parrent window-nya. That’s it….

Handle Error pada JavaScript

Mungkin ada beberapa diantara kamu yg blom tau ada handling error di javascript… itu mah gw deng.. hehe, sorry atuh… Gw sering bikin script pake javascript untuk kepentingan web. Nah, cuman bari kali ini, gw liat ada script untuk penanganan error persis kayak di C#.NET. Gimana gak kaget, gw sering make tu script, cuman ya di code behind ASP.NET, yaitu di C# nya, bukan di javascriptnya. Mungkin berguna jg bwt temen2 smua yg baru tau juga.

Well, ternyata code try and catch yg selama ini sering gw pake di C#, kepake juga di javascript. Fungsinya sama juga, untuk handling error. Dengan demikian, kita bisa dapet informasi kenapa error itu terjadi. Berikut adalah script yg bisa digunakan.

<script type="text/javascript">
var txt="";
function message()
{
   try
   {
      addalert("Welcome guest!");
   }
   catch(err)
   {
      txt="There was an error on this page.\n\n";
      txt+="Error description: " + err.description + "\n\n";
      txt+="Click OK to continue.\n\n";
      alert(txt);
   }
}
</script>

Nah, smacam itu lah. Yang terjadi nanti adalah akan muncul message bahwa terjadi error pada fungsi tersebut. Dalam contoh tersebut, sengaja dibuat error pada bagian trynya, sehingga masuk ke bagian catch dan memberikan informasi error apa yg terjadi.

Indexer di C#

Kmaren gw iseng2 ikut test di BrainBench trus ada sesuatu yang menggelitik. Gw nemu istilah indexer yg waktu itu gw artiin sbagai array. Dan gw jawabnya ngasal soalnya baru nemu istilah tsb (kmana aja gw??). Ternyata, indexer itu emg array, cuman dibuat sedemikian rupa sehingga enak dipakenya.

///  <summary>
/// A simple indexer example.
///  </summary>
class IntIndexer
{
   privatestring[] myData;

   public IntIndexer(int size)
   {
      myData = new string[size];

      for(int i=0; i < size; i++)
      {
         myData[i] = "empty";
      }
   }

   public string this[int pos]
   {
      get
      {
         return myData[pos];
      }
      set
      {
         myData[pos] = value;
      }
   }

   static void Main()
   {
      int size = 10;

      IntIndexer myInd =  new IntIndexer(size);

      myInd[9] = "Some Value";
      myInd[3] = "Another Value";
      myInd[5] = "Any Value";

      Console.WriteLine("\nIndexer Output\n");

      for(int i=0; i < size; i++)
      {
         Console.WriteLine("myInd[{0}]:{1}", i, myInd[i]);
      }
   }
}

IntIndexer class punya string array dgn nama myData. Ini adalah private array yang gak bisa diakses langsung oleh pengguna eksternal. Array ini diinisialisasi dalam sebuah constructor, yang menerima input parameter int size, menginisialisasi myData array, kemudian mengisi setiap elemen dengan kata “empty”.

Anggota Class selanjutnya adalah Indexer, yang diidentifikasi dengan keyword this dan kurung siku, this[int pos]. Indexer ini menerima input posisi, pos. Seperti kita lihat, indexer diimplementasikan sama kayak Property.

Pada method Main() ditunjukan bagaimana cara implementasi dari Indexer tersebut, hingga memunculkan hasilnya. Dan hasilnya akan seperti ini :

Indexer Output

myInd[0]: empty
myInd[1]: empty
myInd[2]: empty
myInd[3]: Another Value
myInd[4]: empty
myInd[5]: Any Value
myInd[6]: empty
myInd[7]: empty
myInd[8]: empty
myInd[9]: Some Value

Kirim variable Antar Page

Sering kali kita liat internet address kayak gini

http://www.localhost.com/Webform2.aspx?
name=Atilla&lastName=Ozgur

Alamat tersebut menggunakan QueryString property untuk mengirimkan value dari sebuah variabel ke page lainnya. Terlihat ada 3 informasi yang bisa kita dapet.

  1. Webform2.aspx, adalah page tujuan.
  2. name=Atilla, kirim variabel name dengan value Atilla
  3. lastName=Ozgur, kirim variabel lastName dengan value Ozgur

Trus gimana cara parsingnya?? Lo bisa pake

Response.Redirect("http://www.localhost.com/Webform2.aspx?
name=Atilla&lastName=Ozgur");

pada sebuah event, click button misalnya.

Trus ngambil valuenya gimana?? Pada page tujuan, dalam hal ini Webform2.aspx, tambahkan code berikut

Lanjutkan membaca

Ngambil nilai dari GridView

Wuih, da ide lagi nih. Barusan gw liat-liat code kerjaan gw, ternyata, gw nemu sesuatu yang menarik. Berkaitan dengan gimana cara ngambil value dari sebuah GridView. Well, gini nih caranya…

Klo lo punya GridView columns dengan type BoundField, maka cara ngambilnya akan seperti ini:

GridViewRow fRow = GridViewName.Rows[RowIndex];
TableCell fCell = fRow.Cells[CellIndex];
string fResult = fCell.Text;

Nah, klo type columns-nya TemplateField, lo harus nyari dulu control yang nyimpen datanya dimana… Contohnya lo mau ngambil value yang ada di Label grade.

GridViewRow fRow = GridViewName.Rows[RowIdx];
Label grade = (Label)fRow.FindControl("grade");
string fResult = "";
if (grade != null)
{
   fResult = grade.Text;
}

Gitu doang, mudah kan?