Sunday, December 25, 2016

Bab 12. Pemrograman Internet



DHTML: Kendali Data Tabular







12.1 Pengantar

Ini merupakan bab paling krusial bagi mereka yang ingin membangun aplikasi berbasis web. HTML dinamis (DHTML) membantu para pengembang aplikasi web untuk menghasilkan aplikasi web yang lebih responsif.

Dengan pengikatan data (data binding), data tidak lagi secara eksklusif ada di server. Data dapat dikelola di klien. Secara umum, data dikirim ke klien dan semua manipulasi terjadi pada data secara langsung di klien, sehingga mengurangi beban aktifitas dan tunda jaringan.

Begitu data tersedia bagi klien, data tersebut dapat diurutkan dan difilter dalam pelbagai cara. Di sini, akan disajikan beberapa contoh dari tiap operasi tersebut.

Untuk mengikat data eksternal pada elemen-elemen XHTML, Internet Explorer menggunakan apa yang dinamakan dengan DSOs (Data Source Objects). Ada beberapa DSOs yang tersedia. Di sini akan dibahas mengenai TDC (Tabular Data Control).


12.2 Pengikata Data Sederhana
TDC (Tabular Data Control) merupakan kendali ActiveX yang ditambahkan pada sebuah halaman dengan elemen object. Data disimpan pada sebuah file yang terpisah (Gambar 12.1) dan tidak ditanamkan ke dalam dokumen XHTML. Gambar 12.2 mendemonstrasikan kegunaan sederhana dari pengikatan data dengan TDC untuk memperbarui isi sebuah elemen span (file data yang digunakan pada contoh ini diberikan pada Gambar 12.1).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@NamaWarna@|@NilaiRGBHexWarna@
@aqua@|@#00FFFF@
@black@|@#000000@
@blue@|@#0000FF@
@fuchsia@|@#FF00FF@
@gray@|@#808080@
@green@|@#008000@
@lime@|@#00FF00@
@maroon@|@#800000@
@navy@|@#000080@
@olive@|@#808000@
@purple@|@#800080@
@red@|@#FF0000@
@silver@|@#C0C0C0@
@teal@|@#008080@
@yellow@|@#FFFF00@
@white@|@#FFFFFF@

Gambar 12.1 Data tabel warna XHTML (WarnaStandarHTML.txt)

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 12.2: pengenalanPengikatanDinamis.html -->
<!-- Pengikatan data sederhana dan manipulasi himpunanRekaman -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Pengikatan Data Dinamis</title>

        <!-- Elemen object ini menyisipkan kendali ActiveX -->
        <!-- untuk menangani dan mengkonversi data. Beberapa Tag PARAM -->
        <!-- memberikan parameter kendali -->
        <!-- seperti URL. -->
        <object id = "Warna"
           classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
           <param name = "DataURL" value =
               "WarnaStandarHTML.txt" />
           <param name = "UseHeader" value = "TRUE" />
           <param name = "TextQualifier" value = "@" />
           <param name = "FieldDelim" value = "|" />
        </object>

        <script type = "text/javascript">
            <!--
            var himpunanRekaman = Warna.recordset;

            function keAngka()
            {
                if ( !himpunanRekaman.EOF )
                    angkaRekaman.innerText =
                        himpunanRekaman.absolutePosition;
                else
                    angkaRekaman.innerText = " ";
            }

            function maju()
            {
                himpunanRekaman.MoveNext();

                if ( himpunanRekaman.EOF )
                    himpunanRekaman.MoveFirst();

                contohWarna.style.backgroundColor =
                    warnaRGB.innerText;
                keAngka();
            }
            // -->
        </script>
    </head>

    <body onload = "keAngka()" onclick = "maju()">

        <h1>Tabel Warna XHTML</h1>
        <h3>Klik untuk maju di dalam himpunan rekaman.</h3>

        <p><strong>Nama Warna: </strong>
        <span id = "idWarna" style = "font-family: monospace"
            datasrc = "#Warna" datafld = "NamaWarna"></span><br />

        <strong>Nilai RGB Warna: </strong>
        <span id = "warnaRGB" style = "font-family: monospace"
            datasrc = "#Warna" datafld = "NilaiRGBHexWarna">
        </span><br />

        Angka rekaman yang sedang dilihat sekarang
        <span id = "angkaRekaman" style = "font-weight: 900">
        </span><br />

        <span id = "contohWarna" style = "background-color: aqua;
            color: 888888; font-size: 30pt">Contoh Warna
        </span></p>

    </body>
</html>



Gambar 12.2 Pengikatan data dinamis


Baris 1 pada Gambar 12.1 memulai data dengan sebuah baris header. Baris ini menetapkan nama-nama kolom (NamaWarna dan NilaiRGBHexWarna). Data pada tiap bidang diapit dengan text qualifier (@) dan tiap bidang dipisahkan dengan sebuah pembatas bidang (|).

Elemen object (baris 16-23 pada Gambar 12.2) di sini menyisipkan TDC, salah satu kendali Microsoft ActiveX. Atribut classid menetapkan kendali ActiveX untuk ditambahkan pada halaman web. Di sini Anda menggunakan classid dari Tabular Data Control.

Tag param menetapkan parameter-parameter untuk objek pada elemen object. Atribut name adalah nama parameter dan atribut value adalah nilai. Parameter DataURL adalah URL dari sumber data (WarnaStandarHTML.txt). Parameter UseHeader, ketika ditetapkan menjadi true, menetapkan bahwa baris pertama dari data adalah baris header.

Parameter ketiga, TextQualifier, menetapkan text qualifier untuk data (pada kasus ini adalah @). Text qualifier adalah karakter yang ditempatkan di kedua akhir dari bidang data. Parameter keempat, FieldDelim, menetapkan pembatas bidang pada data (pada kasus ini adalah |).

Baris 59-60 mengikat data pada sebuah elemen span. Atribut datasrc merujuk pada id dari objek TDC (Warna, pada kasus ini) yang diawali dengan tanda has (#), dan atribut datafld menetapkan nama dari bidang yang mengikatnya (NamaWarna, pada kasus ini). Ini akan menempatkan data yang dimuat pada rekaman pertama (baris) dari kolom NamaWarna ke dalam elemen span.

Sejauh ini, Anda hanya menampilkan data secara statis. Anda dapat memperbaruinya secara dinamis dengan beberapa skrip sederhana. Baris 27 menugaskan properti recordset dari objek Warna (elemen object TDC) kepada variabel himpunanRekaman. Untuk pindah ke baris berikutnya dalam sumber data, baris 41 memanggil metode MoveNext dari objek himpunanRekaman. Ini akan memajukan satu baris di dalam himpunan rekaman, yang secara otomatis memperbarui elemen span (pengikat data). Perhatikan bahwa baris 40 menentukan apakah properti EOF dari himpunanRekaman adalah false. Jika false, ini mengindikasikan bahwa akhir dari sumber data telah diraih. Jika EOF bernilai true, maka baris 43 akan memanggil metode MoveFirst untuk pindah ke rekaman pertama di dalam file.


12.3 Menavigasi Rekaman Data
Banyak aplikasi akan membutuhkan fungsionalitas yang lebih dari sekedar bergerak maju di dalam rekaman. Gambar 12.3 mendemonstrasikan penciptaan sebuah antarmuka pengguna untuk menavigasi sumber data pada Gambar 12.1.

Struktur switch pada baris 31-64 mengevaluasi nilai yang akan dilewatkan kepada pindah. Dua fungsi yang digunakan adalah MoveLast dan MovePrevious, yang akan menggerakkan ke rekaman terakhir dan rekaman sebelumnya. Baris 41 menguji apakah rekaman sekarang menunjuk ke awal file (BOF), sehingga Anda mengarahkannya kembali.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- Gambar 12.: pindah.html -->
<!-- Menjelajah rekaman -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Melihat Rekaman Secara Dinamis</title>
        <object id = "Warna"
           classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
           <param name = "DataURL" value =
               "WarnaStandarHTML.txt" />
           <param name = "UseHeader" value = "TRUE" />
           <param name = "TextQualifier" value = "@" />
           <param name = "FieldDelim" value = "|" />
        </object>

        <script type = "text/javascript">
            <!--
            var himpunanRekaman = Warna.recordset;

            function perbarui()
            {
                judulh1.style.color = warnaRGB.innerText;
            }

            function pindah( kemana )
            {
                switch ( kemana ) {

                    case "pertama":
                        himpunanRekaman.MoveFirst();
                        perbarui();
                        break;

                    // jika recordset di awal, pindah ke akhir.
                    case "sebelumnya":

                        himpunanRekaman.MovePrevious();

                        if ( himpunanRekaman.BOF )
                            himpunanRekaman.MoveLast();

                        perbarui();
                        break;

                    // jika recordset di akhir, pindah ke awal.
                    case "berikutnya":

                        himpunanRekaman.MoveNext();

                        if ( himpunanRekaman.EOF )
                            himpunanRekaman.MoveFirst();

                        perbarui();
                        break;

                    case "terakhir":
                        himpunanRekaman.MoveLast();
                        perbarui();
                        break;
                }
            }
            // -->
        </script>

        <style type = "text/css">
            input { background-color: khaki;
                    color: green;
                    font-weight: bold }
        </style>
    </head>

    <body style = "background-color: darkkhaki">

        <h1 style = "color: black" id = "judulh1">
            Tabel Warna XHTML</h1>
        <span style = "position: absolute; left: 200; width: 270;
            border-style: groove; text-align: center;
            background-color: cornsilk; padding: 10">
        <strong>Nama Warna: </strong>
        <span id = "NamaWarna" style = "font-family: monospace"
            datasrc = "#Warna" datafld = "NamaWarna">ABC</span>
        <br />

        <strong>Nilai RGB Warna: </strong>
        <span id = "warnaRGB" style = "font-family: monospace"
            datasrc = "#Warna" datafld = "NilaiRGBHexWarna">ABC
        </span><br />

        <input type = "button" value = "Pertama"
            onclick = "pindah( 'pertama' );" />

        <input type = "button" value = "Sebelumnya"
            onclick = "pindah( 'sebelumnya' );" />

        <input type = "button" value = "Berikutnya"
            onclick = "pindah( 'berikutnya' );" />

        <input type = "button" value = "Terakhir"
            onclick = "pindah( 'terakhir' );" />
        </span>

    </body>
</html>


12.4 Pengikatan pada table
Pengikatan data pada sebuah elemen table mungkin merupakan fitur terpenting pada pengikatan data. Ini dilakukan berbeda dari pengikatan data yang telah dilakukan. Gambar 12.4 mengikat data para sebuah elemen table (data yang digunakan adalah data pada Gambar 12.1).



Gambar 12.3 Menjelajah rekaman menggunakan 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
47
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 12.4: pengikatantabel.html -->
<!-- Menggunakan Pengikatan Data dengan table -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Pengikatan Data dan Tabel</title>
        <object id = "Warna"
           classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
           <param name = "DataURL" value =
               "WarnaStandarHTML.txt" />
           <param name = "UseHeader" value = "TRUE" />
           <param name = "TextQualifier" value = "@" />
           <param name = "FieldDelim" value = "|" />
        </object>
    </head>

    <body style = "background-color: darkseagreen">

        <h1>Pengikatan Data ke sebuah <code>table</code></h1>

        <table datasrc = "#Warna" style = "border-style: ridge;
            border-color: darkseagreen;
            background-color: lightcyan">

        <thead>
        <tr style = "background-color: mediumslateblue">
            <th>Nama Warna</th>
            <th>Nilai RGB Warna</th>
        </tr>
        </thead>

        <tbody>
            <tr style = "background-color: lightsteelblue">
                <td><span datafld = "NamaWarna"></span></td>
                <td><span datafld = "NilaiRGBHexWarna"
                style = "font-family: monospace"></span></td>
            </tr>
        </tbody>

        </table>

    </body>
</html>



Gambar 12.4 Pengikatan data pada sebuah elemen table


Baris 25-27 memulai pengikatan tabel dengan menambahkan atribut datasrc pada tag table pembuka. Anda menyempurnakan pengikatan data pada baris 38-40 dengan menambahkan atribut datafld pada beberapa tag span yang ada pada sel-sel tabel.


12.5 Pengurutan Data table
Jika Anda memanipulasi sumber data berukuran besar, maka klien Anda mungkin akan memerlukan cara tertentu untuk mengurutkan data tersebut. Ini dapat dilakukan menggunakan properti Sort dari TDC (Gambar 12.5).

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 12.5: pengurutan.html -->
<!-- Sorting table data -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Pengikatan Data dan Tabel</title>
        <object id = "Warna"
           classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
           <param name = "DataURL" value =
               "WarnaStandarHTML.txt" />
           <param name = "UseHeader" value = "TRUE" />
           <param name = "TextQualifier" value = "@" />
           <param name = "FieldDelim" value = "|" />
       </object>
    </head>

    <body style = "background-color: darkseagreen">

        <h1>Pengurutan Data</h1>

        <table datasrc = "#Warna" style = "border-style: ridge;
            border-color: darkseagreen;
            background-color: lightcyan">
            <caption>
            Pengurutan dengan:

            <select onchange = "Warna.Sort = this.value;
                Warna.Reset();">
                <option value = "NamaWarna">Nama Warna (Menaik)
                    </option>
                <option value = "-NamaWarna">Nama Warna (Menurun)
                    </option>
                <option value = "NilaiRGBHexWarna">Nilai RGB Warna
                    (Menaik)</option>
                <option value = "-NilaiRGBHexWarna">Nilai RGB Warna
                    (Menurun)</option>
            </select>
            </caption>

            <thead>
            <tr style = "background-color: mediumslateblue">
                <th>Nama Warna</th>
                <th>Nilai RGB Warna</th>
            </tr>
            </thead>

            <tbody>
            <tr style = "background-color: lightsteelblue">
                <td><span datafld = "NamaWarna"></span></td>
                <td><span datafld = "NilaiRGBHexWarna"
                    style = "font-family: monospace"></span></td>
            </tr>
            </tbody>

        </table>

    </body>
</html>

Baris 31-32 mengurutkan data dengan menetapkan kolom untuk diurutkan menggunakan properti Sort dari TDC. Contoh ini menetapkan properti Sort menjadi nilai dari tag option yang terseleksi (this.value) ketika event onchange terjadi. Katakunci JavaScript, this, merujuk ke elemen dimana di dalamnya statemen berada (elemen select). Oleh karena itu, properti value merujuk ke nilai tag option terseleksi terkini. Setelah menetapkan properti Sort, Anda memanggil metode Reset dari TDC untuk menampilkan data dengan urutan yang baru.

Baris 33-36 menetapkan atribut value dari beberapa tag option menjadi nama-nama kolom pada file data. Secara default, sebuah kolom diurutkan dengan urutan menaik. Untuk mengurutkan dengan tatanan menurun, nama kolom diawali dengan tanda minus (-).



Gambar 12.5 Pengurutan data di dalam elemen table


12.6 Pengurutan Lanjut
TDC dapat mengurutkan data yang memuat beberapa kolom (Gambar 12.6). Dikombinasikan dengan pemilteran ( pemilihan data yang memenuhi kriteria tertentu), hal ini memberikan cara jitu dalam mengelola data (Gambar 12.7).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Judul:String@|@Pengarang:String@|@Hakcipta:String@|@Edisi:String@|@Tipe:String@
@Dasar Pemrograman C++@|@Rismon,Rismon@|@2010@|@1@|@BK@
@Pemrosesan Sinyal Digital@|@Rismon,Rismon@|@2010@|@2@|@BK@
@Teori dan Implementasi C++@|@Rismon,Rismon@|@2011@|@1@|@BK@
@Teori dan Implementasi Java@|@Rismon,Rismon@|@2012@|@2@|@BK@
@Java: Algoritma, Struktur Data, dan Pemrograman GUI@|@Rismon,Rismon@|@2012@|@1@|@BK@
@Pemrograman MATLAB Untuk Sains dan Teknik@|@Rismon,Rismon@|@2012@|@2@|@BK@
@Struktur Data C++ Dengan Pemrograman Generik@|@Rismon,Rismon@|@2013@|@3@|@BK@
@Pemrograman Java Untuk Programer@|@Rismon,Rismon@|@2013@|@1@|@BK@
@Teori dan Aplikasi Pemrograman Java@|@Rismon,Rismon@|@2013@|@1@|@BK@
@Dasar Pemrograman Visual Basic@|@Rismon,Rismon@|@2014@|@1@|@BKMMCD@
@C# Belajar Dari COntoh@|@Rismon,Rismon@|@2014@|@2@|@BKMMCD@
@Pemrograman C++ Untuk Programer@|@Rismon,Rismon@|@2014@|@1@|@BKMMCD@
@Pemrograman C++ Untuk Pemula@|@Rismon,Rismon@|@2014@|@2@|@BKMMCD@
@Dasar Pemrograman Internet@|@Rismon,Rismon@|@2014@|@3@|@BKMMCD@
@Dasar Pemrograman XML@|@Rismon,Rismon@|@2014@|@1@|@BKMMCD@
@Pemrosesan Citra Digital@|@Rismon,Rismon@|@2013@|@1@|@BKMMCD@

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 12.6: pengurutanLanjut.html -->
<!-- Pengurutan dan Pemilteran data -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Pengikatan Data--Pengurutan dan Pemilteran</title>

        <object id = "Publikasi"
           classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
           <param name = "DataURL" value = "RismonPublikasi.txt" />
           <param name = "UseHeader" value = "TRUE" />
           <param name = "TextQualifier" value = "@" />
           <param name = "FieldDelim" value = "|" />
           <param name = "Sort" value = "+Judul" />
       </object>

       <style type = "text/css">

           a { font-size: 9pt;
               text-decoration: underline;
               cursor: hand;
               color: blue }

           caption { cursor: hand; }

           span { cursor: hand; }

       </style>

       <script type = "text/javascript">
           <!--
           var tatananUrut;

           function urutLagi( kolom, tatanan )
           {
               if ( tatanan )
                   tatananUrut = "";
               else
                   tatananUrut = "-";

               if ( event.ctrlKey ) {
                   Publikasi.Sort += "; " + tatananUrut + kolom;
                   Publikasi.Reset();
               }
               else {
                   Publikasi.Sort = tatananUrut + kolom;
                   Publikasi.Reset();
               }

               spanSort.innerText = "Urutan Sekarang: " +
                   Publikasi.Sort;
           }

           function filter( teksFilter, kolomFilter )
           {
               Publikasi.Filter = kolomFilter + "=" +
                   teksFilter;
               Publikasi.Reset();
               spanFilter.innerText =
                   "Filter Sekarang: " + Publikasi.Filter;
           }

           function bersihkanSemua()
           {
               Publikasi.Sort = " ";
                   spanSort.innerText = "Urutan Sekarang: None";
                   Publikasi.Filter = " ";
                       spanFilter.innerText = "Urutan Filter: None";
               Publikasi.Reset();
           }
           // -->
       </script>
    </head>

    <body>
        <h1>Pengurutan Lanjut</h1>
        <p>Klik link di samping kepala kolom untuk mengurutkan kolom
           tersebut. Untuk mengurutkan lebih dari satu kolom pada suatu waktu,
           tahan Ctrl ketika Anda mengklik link pengurutan lain. Klik
           sembarang sel untuk memfilter data pada sel tersebut. Untuk membersihkan
           filter dan pengurutan, klik batang kapsion hijau.</p>

           <table datasrc = "#Publikasi" border = "1"
              cellspacing = "0" cellpadding = "2" style =
              "background-color: papayawhip;">

           <caption style = "background-color: lightgreen;
               padding: 5" onclick = "bersihkanSemua()">
               <span id = "spanFilter" style = "font-weight: bold;
                   background-color: lavender">Filter Sekarang: None
                   </span>
               <span id = "spanSort" style = "font-weight: bold;
                   background-color: khaki">Pengurutan Sekarang: None</span>
           </caption>

           <thead>
           <tr>
               <th>Judul <br />
                   (<a onclick = "urutLagi( 'Judul', true )">
                       Menaik</a>
                   <a onclick = "urutLagi( 'Judul', false )">
                       Menurun</a>)
               </th>

               <th>Pengarang <br />
                   (<a onclick = "urutLagi( 'Pengarang', true )">
                       Menaik</a>
                   <a onclick = "urutLagi( 'Pengarang', false )">
                       Menurun</a>)
               </th>

               <th>Hakcipta <br />
                   (<a onclick = "urutLagi( 'Hakcipta', true )">
                       Menaik</a>
                   <a onclick = "urutLagi( 'Hakcipta', false )">
                       Menurun</a>)
               </th>

               <th>Edisi <br />
                   (<a onclick = "urutLagi( 'Edisi', true )">
                       Menaik</a>
                   <a onclick = "urutLagi( 'Edisi', false )">
                       Menurun</a>)
               </th>

               <th>Tipe <br />
                   (<a onclick = "urutLagi( 'Tipe', true )">
                       Menaik</a>
                   <a onclick = "urutLagi( 'Tipe', false )">
                       Menurun</a>)
               </th>
           </tr>
           </thead>

           <tr>
               <td><span datafld = "Judul" onclick =
                   "filter( this.innerText, 'Judul' )"></span>
               </td>

               <td><span datafld = "Pengarang" onclick =
                   "filter( this.innerText, 'Pengarang')"></span>
               </td>

               <td><span datafld = "Hakcipta" onclick =
                   "filter( this.innerText, 'Hakcipta' )"></span>
               </td>

               <td><span datafld = "Edisi" onclick =
                   "filter( this.innerText, 'Edisi' )"></span>
               </td>

               <td><span datafld = "Tipe" onclick =
                   "filter( this.innerText, 'Tipe' )"></span>
               </td>

           </tr>

       </table>

    </body>
</html>






Gambar 12.6 Pengurutan dan Pemilteran data lanjut


No comments:

Post a Comment