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