wZine

M$ Tabular Data Control (TDC)
14 Jun 1999 by Laacz


   Tabulārais Datu Kontrolis (:), jeb latviski - SDK, ir tāds ActiveX objektiņš, kontrolītis, etc, kura priekus, diemžēl, var baudīt tikai MSIE4+ lietotāji. Tas ļauj attēlot kādā eksternālā failā noglabātus datus iekš kādas HTML lapas.

   Šamais kontrols nāk kopā ar MSIE4 instalāciju (kā arī, protams, ar visiem descendentiem) un dislocējās datnē tdc.ocx (uz manas miskastes tas ir iekš c:\winnt\system32\tdc.ocx :). Pirms dosimies pie piemēriem, no sākuma aprakstīšu visus 13 propertijus un visu 1 metodi, kuras šamais suportē. Tātad:
 
 POPERTIJS  APRAKSTS 
 Charset   Apraksta, kādu čaraktersetu lietot tabulai. Parasti to norādīt nav jēgas, jo tas tiek noteikts lapā. Defaultā vērtība ir "latin1". Ja nav šamais tiek atstāts par defaulto vai norādīts kā "", tad tiek uzskatīts, ka ienākošā datne ir unicodē.
 DataURL   Norāda URLi uz failu, kurš satur datus. Tiek azīts standarta URĻu formāts - http:, ftp:, file:. Piemēram - http://www.data.lv/data.txt. Parasti DataURL tiek nodefinēts pašā object elementā kā parametrs, taču, to var mainīt arī ar skriptu. To darot, tiek ieloadots jaunais datasets, kuru tu esi laipni norādījis. To parasti arīdzan izmanto, lai refrešotu datus, piešķirot šamajam parametram vēlreiz jau esošo DataURL.
 EscapeChar   Norāda simbolu, kurš tiks likts priekšā pirms speciālajiem simboliem. Speciālie simboli var būt tie, kas nodefinēti parametros FieldDelim, RowDelim un TextQualifier. Ka tas ir uzsetots uz tukšu stringu (""), nestandarta simboli nav pieļaujami lauku saturā (by default tā tas arī ir). Piemēram, ja TextQualifier ir nodefinēts kā vienkāršās pēdiņas ("), bet daži no laukiem satur šīs pašas pēdiņas, nodefinē EscapeChar kaut vai kā backlašu (\). Tad notiks tā, ka rakstot "This is \"really\" cool", pēdiņas aiz \ nenozīmēs atdalītus laukus, bet gan to, ka sekojošais simbols ir jādrukā un tiks izdrukāts This is "really" cool
 FieldDelim   Norāda, kurš simbols nozīmēs lauka beigas. Defaultais simbols ir komats (,). Lai arī parasti tiek izmantots viens simbols, var arī izmantot to virkni (piemēram, <param name=FieldDelim value="kakainis">). Vari arī izmantot speciālos simbolus. Piemēram, lai noteiktu, ka lauki tiks atdalīti ar tabulāciju, raksti: <param name=FieldDelim value=="&#009;">
 FilterColumn   Norāda, pēc kuras datu kolonnas ta tiks veikta filtrācija. By default šamais mainīgais ir tukšs. Ja nav kolonnu nosaukumi, tad tiem tiek doti nosaukumu Cloumn1 .. ColumnN. Ja šis propertijs ir tukšs, tad nekas netiks filtrēts, neskatoties uz FilterCriterion un/vai FilterValue vērtībām.
 FilterCriterion   Norāda filtru. Iespējamās vērtības ir:
   =   (ekvivalents; defaultā vērtība),
   <>  (nav vienāds),
   >   (lielāks),
   >=  (lielāks vai vienāds),
   <   (mazāks),
   <=  (mazāks vai vienāds)
 Šamais parametrs ir saistīts ar FilterValue un FilterColumn parametriem. Filtrēšana notiek, kad tiek izsaukta metode Reset.
 FilterValue   Norāda vērtību, kuru salīdzināt ar kolonnas FilterColumn datiem pēc FilterCriterion kritērija. Ja dati iekš šās vērtības neatbilst datiem iekš filtrējamās kolonnas, tad nekas netiek filtrēts. Notiek, kad tiek izsaukta Reset. Sekojošais piemērs atfiltrēs no piezīmju grāmatiņas visus ierakstus, kuriem ir ierakstīts telefona numurs:
...
<param name=FilterColumn value="PhoneNum">
<param name=FilterCriterion value="<>">
<param name=FilterValue value="">
...
 Language   Norāda kādā valodā ir datu fails. Izmantoti tiek HTML standarta saīsinājumi (ISO 369). Defaultā vērtība ir "eng-us". Šamais ietekmē komatu processingu datos ar pledošo pixeli.
 RowDelim   Pasaka, ar kādu ta nu simbolu (vai to virkni) mēs atdalīsim rindas (rows). Defaultā vērtība ir jaunas rindas sākums (angliski to sauc newline).
 SortAscending   Nosaka kārtošanas secību. Booleans. True ir defaultā vērtība. Sortē pēc kolonnas, kura norādīta parametrā SortColumn, pamatojoties uz sekojošiem noteikumiem:
SortAscending = True
Texc: "a" "b" "c" ... "z"
Skaitļi: ... -1 0 1 ...
Datumi: 1/1/1950 1/1/1990 1/1/2000
Booleani: False False ... True True
SortAscending = False
Texc: "z" "y" "x" ... "a"
Skaitļi: ... 1 0 -1 ...
Datumi: 1/1/2000 1/1/1990 1/1/1950
Booleani: True True ... False False
 Teksts vienmēr tiek sortēts neņemot vērā lielos/mazos burtus. Piemēram, "ab" vienmēr būs mazāks par "Bb" un "Aa" būs lielāks par "aa".
 SortColumn   Norāda kolonnu, pēc kuras sortēsim. By default šamais mainīgais ir tukšs. Ja nav kolonnu nosaukumi, tad tiem tiek doti nosaukumu Cloumn1 .. ColumnN. Ja šis propertijs ir tukšs, tad nekas netiks sortēts, neskatoties uz SortAscending vērtību.
 TextQualifier   Norāda (neobligāto) čarakteri, kurš ierobežos vienu lauku. Tas ir noderīgs gadījumiem, kad iekš lauka ir kaudze (vai arī viens) ar speciālajiem simboliem - pārejas uz nākamo rindu, tabulācijas vai komati. Defaultā vērtība ir pēdiņas ("). Piemērs:
Lielais Naidnieks, "42 kaut kādā ielā, kaut kādā pilsētā, kaut kur karoče", 777-7777
Smukā Meitene, "Tā nu es te tev tagad teikšu...", 900-5656
 Vēl viens pielietojums ir tad, kad tabulas lauks satur HTMLu, kuramajā, protams, ir kaudze ar visvisādiem enteriem, etc.
 UseHeader   True, ja pirmajā rindā (faila) atrodās lauku nosaukumi un to tipu apraksti. Pierakstās tas viss tā:
lauka_nosaukums:tips,lauka_nosaukums:tips...
lauks,lauks,...
 Tipi var būt sekojoši:
String
Strings (simbolu virkne) (defaultā vērtība)
Date
Datums (skati tālāk formātu)
Boolean
Booleans (Yes/No, True/False, 0/ne 0)
Int
Vesels skaitlis (-3, 1, 0)
Float
Decimāldaļskaitlis (3.141, 2.77, 0)
 Datumam var sekot tā formāta apraksts. Tas notiek tā - lauka_nosaukums:Date DMY, kur D - datums, M - mēnesis, Y - gads. D, M un Y var būt jebkurā tev labpatīkošajā izvietojumā. Datums tiek saprasts kā trīs skaitļi, kuri ir atdalīti ar vienalga kādu neciparisku simbolu, līdz ar ko - atdalītājs nav svarīgs.
 Tips Boolean tiek saprasts šādi:
True = {Yes, True, 1, -1, jebkurš_skaitlis_kurš_nav_nulle}
False = {No, False, 0 (nulle)}
 Decimālatdalītājs tiek nodefinēts caur parametru Language.
 Sekojošais elementārais piemērs (neaizmirsti, ka UseHeader jābūt uz True):
Ēdiens,Cena:Float,Nopirkts:Date Apmaksāts:Boolean,Skaits:Int
Maize,0.18,10/10/1998,Yes,666
Zelta Alus,0.32,10-10-1998,Yes,12345
 
 METODE  APRAKSTS 
 Reset   Pārsortē vai pārfiltrē datus, pamatojoties uz jaunajiem settingiem, kurus tu, protams, esi salicis. Tas neapdeito failu, savācot to no servera, bet gan iehavo to no TDC objekta, kuramajā tas jau glabājās. Kad Reset metode tiek izsaukta, browseris, ja nepieciešams, pārzīmēs lapu.

   Un tagad, beidzot, pastīsimies, kā tas viss strādā. Pirmām kārtām mums nepieciešams fails. Fails, kuru tad nu TDC sapratīs kā datasourci. Failam jābūt TXT (ne paplašinājumam, bet semantiski). Pieņemsim, ka mums ir šāds (dziesmas.txt):

grupa,dziesma,garums
Nine Inch Nails,Ruiner,6:52
Agony Koris,Maziņā neziņā,3:43
Alanis Morissette,Joining You,4:24
Blondie,Maria,4:06
burzum,Det Som En Gang Var,11:15
Depeche Mode,But Not Tonight,4:17
Dzeltenie Pastnieki,Milžu Cīņa,4:57
Emilia,Big Big World,3:21
Gorky Park,Stare,4:56
Hole,Celebrity Skin,2:42
Korn,A.D.I.D.A.S.,2:32
Laibach,Message From The Black Star,5:50
Ministry,Psalm 69 (live),5:06
Ministry,Psalm 69,4:53
Nada Surf,Popular
Silverchair,Anthem For The Year 2000,4:00
Rammstein,Das Modell,4:45
   Un tu to gripi visu parādīt jūzerim iekš tabuliņas nevis plaintekstā. Pirmām kārtām tev jāieembeddo viens objekts, kurš tā arī subjīgi saucās - TDC. Tas darās šādi:
<object id=dziesmas classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
  <param name="DataURL" value="dziesmas.txt">
  <param name="UseHeader" value="True">
</object>
   Značit, parametros mēs nodefinējām, ka mums dati atrodās failā dziesmas.txt, un tam ir headeris, kurš mūsu gadījumā apraksta lauku nosaukumus. Visi lauku tipi ir string (jo tas tā ir by default, ja nav norādīts tips).

   Nu lūk, tagad mēs taisām tabulu, kas attēlos to visu marazmu:

<table datasrc=#dziesmas>
<thead>
<tr>
  <td>Grupa</td>
  <td>Dziesma</td>
  <td>Garums</td>
</thead>
<tbody bgcolor=silver>
  <td><span datafld="grupa"></span></td>
  <td><span datafld="dziesma"></span></td>
  <td><span datafld="garums"></span></td>
</tr>
</tbody>
</table>
   Te nu mēs pasakām browserim, ka gribām tabulu, kurā būtu iekšā lauki grupa, dziesma un garums no faila dziesmas.txt. Vari aplūkot kā tas izskatās dabā (exploreris 4+ nepieciešams).

   Vēlies mājas uzdevumuiņu? Iebraukt filtrēšanā un sortēšanā? Ņem piemēru un uz priekšu :) Tas arī viss šai reizei, mans mazais draudziņ. Ar labu nakti.



Banneru sistēma BBA
Banneru sistēma BBA