jqgrid skripta final novembar 2013

23
Laboratorija za Elektronsko poslovanje SKRIPTA IZ PREDMETA INTERNET TEHNOLOGIJE jqGrid skripta Novembar 2013

Upload: dusan-antonijevic

Post on 09-Sep-2015

231 views

Category:

Documents


6 download

DESCRIPTION

red voznje

TRANSCRIPT

Laboratorija za Elektronsko poslovanjeSKRIPTA IZ PREDMETA INTERNET TEHNOLOGIJEjqGrid skriptaNovembar 2013Sadraj2Sadraj

3Uvod

3Funkcionalnosti jqGrid-a

5Instalacija jqGrid-a u okviru web projekta

7Princip rada jqGrid-a

9Implementacija standardnog grid-a

9Klijentski deo

11Serverski deo

15Operacije nad gridom

17Insert

18Update

19Delete

20Search

UvodjqGrid je reenje za AJAX reprezentaciju i manipulaciju tabelarnih podataka na vebu. jqGrid koristi jQuery Java Script Library i razvijen je kao plugin za jQuery. S obzirom da je grid reenje klijentske strane gde se podaci uitavaju dinamiki kroz AJAX poziv, ovo reenje se moe integrisati sa bilo kojom serverskom tehnologijom (PHP,ASP, Java Servlets, JSP, ColdFusion, andPerl). jqGrid je tehnologija razvijena od strane Trirand Inc. koja je se bavi razvojem veb komponenata i podrava otvorene standard, kao to su: jQuery, ThemeRoller, & jQuery UI. Kljuni zahtevi prilikom razvoja ovog reenja bili su: brzina i nezavisnost od tehnologija serverske strane i tehnologija za upravljanje bazama podataka.

jqGrid arhitektura

Funkcionalnosti jqGrid-ajqGrid omoguava veliki broj funkcionalnosti za upravljanje i manipulaciju podacima putem AJAX poziva. Primeri su dostupni na adresi http://www.trirand.com/blog/jqgrid/jqgrid.html.Osnovni koncepti na kojima se zasnivaju jqGrid funkcionalnosti su:

CSS zasnovane teme za prikaz gridova - jQgrid je kompatibilan sa UI Theming (jQuery system predefinisanih tema). Diveloperi mogu menjati izgled gridova definisanjem sopstvenog CSS UI frejmvorka

brzina - nove verzije rendering engine-a ubrzava uitavanje 5-10 puta

paging - prikazivanje podataka stranicu po stranicu. Podaci se uitavaju tek kada korisnik zahteva odreenu stranicu

kolone ija veliina je fleksibilna

sortiranje po razliitim kriterijumama i razliitim tipovima varijabli

upravljanje dogaajima

autoloading podataka kada korisnik uradi skrol

laka integracija sa bilo kojom tehnologijom serverske strane

podrka za sve brauzere

viejezinost - trenutno je podrano 20ak jezika

podrka za XML, JSON i nizove kao izvore podataka. Mogue je definisati i custom tipove podataka

subgridsKljune funkcionalnosti su:Formatting - Napredne funkcionalnosti za formatiranje sadraja u elijama. Predefinisani tipovi su: integer, number, date, currency, links, check boxes and etc.

Inline i Cell editing - Mogunost auriranja bilo koje elije u bilo kom redu inline

Form editing - Kreiranje formi ad hoc, za editovanje ili unos podataka:

Searching i filtering - Pretraga i filterisanje po razliitim kriterijumima

Tree grids

Import/Export - mogunost importa ili eksporta celokupne konfiguracije grida u odgovarajui format: xml, json, xmlstring, jsonstring.

Instalacija jqGrid-a u okviru web projekta1) Potrebno je preuzeti jqGrid sa adrese http://www.trirand.com/blog/?page_id=6

2) Potrebno je preuzeti jQuery UI sa adrese http://jqueryui.com/download/Nakon raspakivanja fajlova iz dve preuzete arhive, potrebno je napraviti veb projekat u kojem e se koristiti jqGrid. U okviru projekta treba napraviti dva folder js i css. kopirati fajl ui.jqgrid.css iz jqGrid arhive u folder css u okviru projekta. kopirati sve fajlove iz js foldera jqGrid arhive u folder js u okviru projekta. kopirati sve fajlove iz css foldera UI Themes arhive u folder css u okviru projekta.Nakon ovoga, struktura projekta bi trebalo da izgleda ovako: /myproject/css/

ui.jqgrid.css

/ui-lightness/

/images/

jquery-ui-1.7.2.custom.css

/myproject/js/

/i18n/

grid.locale-bg.js

list of all language files

.

Changes.txt

jquery-1.4.2.min.js

jquery.jqGrid.min.js

Da bi se mogao koristiti jqGrid u okviru neke stranice, potrebno je da kod izgleda ovako:

My First Grid

...

Princip rada jqGrid-a

Postoje dva spekta rada sa tabelarnim podacima: reprezentacija na klijentskoj strain i reprezentacija na serverskoj strani. jqGrid je komponenta koja predstavlja podatke u tabelarnom zapisu. Jqgrid korist AJAX poziv da bi dobio podatke i zatim ih predstavlja koristei Column Model (colModel). jqGrid grid se sastoji iz 4 dela: Caption layer - informacije o podacima koji su u gridu

Header layer - informacije o kolonama, labelama i sl.

Body layer - podaci koji su dobijeni sa servera

Navigation layer - deo za navigaciju kroz podatke

Grid moe sadrati i dodatne podatke i zapise, kao to su treegrid, subgrid i grupe podataka.

Implementacija standardnog grid-aKlijentski deoFajl za prikaz podataka u gridu, na primer grid.html

My First Grid

html, body {

margin: 150;

padding: 0;

font-size: 75%;

}

$(function () {

$("#list").jqGrid({

url: "server.php",

datatype: "xml",

mtype: "GET",

colNames: ["Inv No", "Date", "ClientID", "Amount", "Tax", "Total", "Notes"], colModel: [

{ name: "invid", width: 55 },

{ name: "invdate", width: 90 },

{ name: "client_id", width: 90 },

{ name: "amount", width: 80, align: "right" },

{ name: "tax", width: 80, align: "right" },

{ name: "total", width: 80, align: "right" },

{ name: "note", width: 150, sortable: false }

],

autowidth: true,

pager: "#pager",

rowNum: 10,

rowList: [10, 20, 30],

sortname: "invid",

sortorder: "desc",

viewrecords: true,

gridview: true,

autoencode: true,

caption: "My first grid"

});

});

Lista najznaajnijih jqGrid parametara:url - izvor odakle se uzimaju podaci za prikaz u gridudatatype - tip podataka koji e biti preuzet sa servera: JSON, XML, nizovimtype - koja metoda se koristi za AJAX poziv: get ili postcolNames - niz u koji se smetaju naslovi kolonacolModel - ovo je najznaajniji deo grida, poto se ovde definiu nazivi kolona sa podacima (name, index, width, align, sortable)pager - HTML element na stranici u okviru kojeg e biti smeten deo za navigaciju gridomrowNum - koliko redova treba da se prikae na stranicirowList - podeavanja interval za prikaz redova u pager-usortname - podeavanje inicijalne kolone za sortiranjeviewrecords - da li da se prikae ukupan broj redova u griducaption - naslov gridaKompletna lista svih parametara je dostupna ovde.jqGrid prihvata podatke od servera u odreen formatu: XML, JSON, niz. Standardni oblik XML fajla koji jqGrid oekuje sa servera izgleda ovako:

cellcontent cell content]]>

cellcontent cell content]]>

Osnovni elementi su:

rows - root element

page - broj stranice

total - ukupan broj stranica

records - ukupan broj zapisa iz upita

row - jedan red u gridu

cell - podaci za prikaz. Moe se koristiti i CDATA. Na taj nain se mogu dodati slike, checkbox-ovi, linkovi i sl.Serverski deo

Napraviti bazu podataka i u njoj kreirati tabelu pomou upita:

CREATE TABLE invheader (

invid int(11) NOT NULL AUTO_INCREMENT,

invdate date NOT NULL,

client_id int(11) NOT NULL,

amount decimal(10,2) NOT NULL DEFAULT '0.00',

tax decimal(10,2) NOT NULL DEFAULT '0.00',

total decimal(10,2) NOT NULL DEFAULT '0.00',

note char(100) DEFAULT NULL,

PRIMARY KEY (invid)

);

Fajl za podeavanje parametara za konekciju sa bazom dbconfig.php

PHP fajl koji slui za dostavljanje podataka iz baze u XML formatu server.php izgleda ovako:

Ukoliko su svi fajlovi pravilno prekopirani, trebalo bi da stranica izgleda kao na slici:

Ukoliko je izlaz iz poslovne logike JSON, onda u fajlu grid.html, treba izmeniti sledeu liniju koda:datatype: "xml" u datatype: "json".PHP fajl koji slui za dostavljanje podataka iz baze u JSON formatu server.php izgleda ovako: