<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Vlatkovic.NET</title>
    <link>http://www.vlatkovic.net/</link>
    <description />
    <language>en-us</language>
    <copyright>Predrag Vlatković</copyright>
    <lastBuildDate>Fri, 25 Jul 2008 09:28:22 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>info@vlatkovic.net</managingEditor>
    <webMaster>info@vlatkovic.net</webMaster>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=4e8ce5af-ca62-4cf2-acf3-e522b41dcb78</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,4e8ce5af-ca62-4cf2-acf3-e522b41dcb78.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,4e8ce5af-ca62-4cf2-acf3-e522b41dcb78.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=4e8ce5af-ca62-4cf2-acf3-e522b41dcb78</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Evo posle stogodišnje pauze da se javim
sa novim slikama. Gde sam bio i šta sam radio, nekom drugom prilikom, možda...<br /><br /><a href="http://picasaweb.google.com/pvlatkovic/MiloIIvana">http://picasaweb.google.com/pvlatkovic/MiloIIvana</a><br /><a href="http://picasaweb.google.com/pvlatkovic/LondonJun2008">http://picasaweb.google.com/pvlatkovic/LondonJun2008</a><br /><a href="http://picasaweb.google.com/pvlatkovic/ProleEILeto2008">http://picasaweb.google.com/pvlatkovic/ProleEILeto2008</a><br /><br /><br /><p></p><img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=4e8ce5af-ca62-4cf2-acf3-e522b41dcb78" /></body>
      <title>Novi albumi na pikasi</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,4e8ce5af-ca62-4cf2-acf3-e522b41dcb78.aspx</guid>
      <link>http://www.vlatkovic.net/2008/07/25/Novi+Albumi+Na+Pikasi.aspx</link>
      <pubDate>Fri, 25 Jul 2008 09:28:22 GMT</pubDate>
      <description>Evo posle stogodišnje pauze da se javim sa novim slikama. Gde sam bio i šta sam radio, nekom drugom prilikom, možda...&lt;br&gt;
&lt;br&gt;
&lt;a href="http://picasaweb.google.com/pvlatkovic/MiloIIvana"&gt;http://picasaweb.google.com/pvlatkovic/MiloIIvana&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://picasaweb.google.com/pvlatkovic/LondonJun2008"&gt;http://picasaweb.google.com/pvlatkovic/LondonJun2008&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://picasaweb.google.com/pvlatkovic/ProleEILeto2008"&gt;http://picasaweb.google.com/pvlatkovic/ProleEILeto2008&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=4e8ce5af-ca62-4cf2-acf3-e522b41dcb78" /&gt;</description>
      <comments>http://www.vlatkovic.net/CommentView,guid,4e8ce5af-ca62-4cf2-acf3-e522b41dcb78.aspx</comments>
      <category>Porodica</category>
    </item>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=ad4ff3ec-df62-4e6e-8159-01f29d376ef7</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,ad4ff3ec-df62-4e6e-8159-01f29d376ef7.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,ad4ff3ec-df62-4e6e-8159-01f29d376ef7.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ad4ff3ec-df62-4e6e-8159-01f29d376ef7</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sećate li se onomad kada smo imali radikala na čelu skupštine. Tada je nastao kratak <a href="http://www.vlatkovic.net/2007/05/08/Horor+Pri%c4%8da+Za+Laku+No%c4%87.aspx">zapis</a> na
temu komaraca, horora, deja vu-a... No danas od komaraca ni traga ni glasa ali se
vratio onaj mučni osećaj od pre par meseci. Tu noć sam koknuo komarca. Zato izađite
na izbore ne čekajte da se gamad namnoži još više, već delajte odmah, dok ne porastu
“k'o rode, jebote” i opet naprave haos. 
</p>
        <p>
Mnogo je skupo sada ne izaći na izbore, nema opravdanja a izbor je lak. Naravno da
nije optimalan ali podsetite se i pročitajte ovo (<a href="http://www.mooshema.com/2008/01/23/drugi-krug-molitva-za-nezaborav/">http://www.mooshema.com/2008/01/23/drugi-krug-molitva-za-nezaborav/</a>)
pa donesite odluku. 
</p>
        <p>
I samo na trenutak da se osvrnem na one koji svih ovih godina ne izlaze na izbore
a posle istih pričaju kako su Srbi stoka. Taj deo populacije zapravo stavlja sebe
u isti rang sa onima koje naziva stokom. Ne izašavši  na izbore ta neozbiljna,
fensi, kul, snobovska ekipa sama sebi (a i nama) kopa rupu i dopušta da se glas koji
zagovara primitivnu, kratkovidu i zlonamernu politiku uzdiže i dobija na snazi. 
</p>
        <p>
Izađite na izbore da stvarno vidimo gde smo ako ništa drugo! Smrt fašizmu!
</p>
        <p>
 
</p>
        <p>
APDEJT - obavezno pročitati:
</p>
        <p>
          <a href="http://www.bebika.com/blog/politika/i-ja-malo-o-izborima/">http://www.bebika.com/blog/politika/i-ja-malo-o-izborima/</a>
        </p>
        <p>
          <a href="http://www.bebika.com/blog/svakodnevnica/zna-on-koliko-je-tesko-biti-majka/">http://www.bebika.com/blog/svakodnevnica/zna-on-koliko-je-tesko-biti-majka/</a>
        </p>
        <p>
          <a href="http://www.vesic.org/blog/politika/drugi-krug-svi-napolje-na-glasanje/">http://www.vesic.org/blog/politika/drugi-krug-svi-napolje-na-glasanje/</a>
        </p>
        <p>
          <a href="http://www.vesic.org/blog/politika/mali-sms-za-podsecanje/">http://www.vesic.org/blog/politika/mali-sms-za-podsecanje/</a>
        </p>
        <p>
Na izbore!
</p>
        <img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=ad4ff3ec-df62-4e6e-8159-01f29d376ef7" />
      </body>
      <title>Opet komarci - izađite na izbore</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,ad4ff3ec-df62-4e6e-8159-01f29d376ef7.aspx</guid>
      <link>http://www.vlatkovic.net/2008/01/31/Opet+Komarci+Iza%c4%91ite+Na+Izbore.aspx</link>
      <pubDate>Thu, 31 Jan 2008 10:44:16 GMT</pubDate>
      <description>&lt;p&gt;
Sećate li se onomad kada smo imali radikala na čelu skupštine. Tada je nastao kratak &lt;a href="http://www.vlatkovic.net/2007/05/08/Horor+Pri%c4%8da+Za+Laku+No%c4%87.aspx"&gt;zapis&lt;/a&gt; na
temu komaraca, horora, deja vu-a... No danas od komaraca ni traga ni glasa ali se
vratio onaj mučni osećaj od pre par meseci. Tu noć sam koknuo komarca. Zato izađite
na izbore ne čekajte da se gamad namnoži još više, već delajte odmah, dok ne porastu
“k'o rode, jebote” i opet naprave haos. 
&lt;/p&gt;
&lt;p&gt;
Mnogo je skupo sada ne izaći na izbore, nema opravdanja a izbor je lak. Naravno da
nije optimalan ali podsetite se i pročitajte ovo (&lt;a href="http://www.mooshema.com/2008/01/23/drugi-krug-molitva-za-nezaborav/"&gt;http://www.mooshema.com/2008/01/23/drugi-krug-molitva-za-nezaborav/&lt;/a&gt;)
pa donesite odluku. 
&lt;/p&gt;
&lt;p&gt;
I samo na trenutak da se osvrnem na one koji svih ovih godina ne izlaze na izbore
a posle istih pričaju kako su Srbi stoka. Taj deo populacije zapravo stavlja sebe
u isti rang sa onima koje naziva stokom. Ne izašavši&amp;nbsp; na izbore ta neozbiljna,
fensi, kul, snobovska ekipa sama sebi (a i nama) kopa rupu i dopušta da se glas koji
zagovara primitivnu, kratkovidu i zlonamernu politiku uzdiže i dobija na snazi. 
&lt;/p&gt;
&lt;p&gt;
Izađite na izbore da stvarno vidimo gde smo ako ništa drugo! Smrt fašizmu!
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
APDEJT - obavezno pročitati:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.bebika.com/blog/politika/i-ja-malo-o-izborima/"&gt;http://www.bebika.com/blog/politika/i-ja-malo-o-izborima/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.bebika.com/blog/svakodnevnica/zna-on-koliko-je-tesko-biti-majka/"&gt;http://www.bebika.com/blog/svakodnevnica/zna-on-koliko-je-tesko-biti-majka/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.vesic.org/blog/politika/drugi-krug-svi-napolje-na-glasanje/"&gt;http://www.vesic.org/blog/politika/drugi-krug-svi-napolje-na-glasanje/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.vesic.org/blog/politika/mali-sms-za-podsecanje/"&gt;http://www.vesic.org/blog/politika/mali-sms-za-podsecanje/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Na izbore!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=ad4ff3ec-df62-4e6e-8159-01f29d376ef7" /&gt;</description>
      <comments>http://www.vlatkovic.net/CommentView,guid,ad4ff3ec-df62-4e6e-8159-01f29d376ef7.aspx</comments>
      <category>politika</category>
    </item>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=28414adb-3fad-487c-a3b0-c32c1566b796</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,28414adb-3fad-487c-a3b0-c32c1566b796.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,28414adb-3fad-487c-a3b0-c32c1566b796.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=28414adb-3fad-487c-a3b0-c32c1566b796</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h5>I opet malo programiranja, ovog puta o proširivanju postojećih asp.net severskih
kontrola na primeru GridView-a. 
</h5>
        <p>
Cilj ovog teksta je da pokaže kako se postojeće ASP.NET serverske kontrole mogu relativno
lako dograditi tako da im se poveća funkcionalnost. Kao primer sam uzeo GridView koji
u osnovnoj postavi nema  multiselect ali uz malo dorade postaje vrlo sličan gridovima
koje srećemo u windows programiranju. Ideja je da možemo da izaberemo više redova
u GridView tako što ćemo prilikom izbora držati taster CTRL. 
</p>
        <p>
Realizacija je sledeća: kad god kliknemo na neki red u GridView kontroli izvrši se
registracija tog klika i nakon postback-a se čitaju indeksi kliknutih redova na osnovu
kojih vraćamo redove u kontroli koji su izabrani. 
</p>
        <p>
Prvi korak je da kreiramo novu klasu koja će predstavljati DataGrid sa multiselect
opcijom. Ona će biti izvedena iz  System.Web.UI.WebControls.GridView klase i
čime obezbeđujemo nasleđivanje svih osobina i metoda ove klase na koje smo navikli. 
</p>
        <p>
public class MultiSelectGridView : System.Web.UI.WebControls.GridView
</p>
        <p>
Zatim je potrebno da na svaki red koji generiše osnovna  GridView klasa “zalepimo”
onclick javascript događaj (event handler). To radimo tako što promenimo OnRowDataBound
metodu iz osnovne klase. 
</p>
        <p>
1: protected override void OnRowDataBound(GridViewRowEventArgs e)<br />
2:  {<br />
3:   base.OnRowDataBound(e);<br />
4:<br />
5:   if (e.Row.DataItem != null)<br />
6:   {<br />
7:    e.Row.Attributes.Add("OnClick", "msel(event)");<br />
8:<br />
9:    _id = this.PageIndex + "." + e.Row.RowIndex.ToString();<br />
10:    e.Row.Attributes.Add("index", _id);<br />
11:   }<br />
12:  }
</p>
        <p>
Glavna stvar se nalazi u liniji 7, gde na Row element dodajemo atribut OnClick koji
će izvršavati msel(event) javascript funkciju na svaki klik. Javascript funkcija msel
registruje gde se izvršio click događaj i upisuje indeks kliknutog elementa u skriveno
(hidden) polje čiju vrednost ćemo kasnije, u postback-u, da parsiramo. Ovu funkciju
ćemo da kreiramo i registrujemo kasnije.<br />
Sledeća stvar se nalazi na linijama 9 i 10. Naime, tu kreiramo indeks elementa koji
je kliknut i vezujemo ga za sam element. Njegova konstrukcija je vrlo jednostavna,
“_id = broj stranice + tačka + indeks trenutnog reda”. Dobijeni indeks se upisuje
kao dodatni atribut u element koji predstavlja red u GridView-u.<br />
Da bi na klijentskoj strani znali koji red je izabran kreiramo Javascript funkciju
“msel“ koju ćemo kasije da registrujemo na strani (podvučeni delovi code-a se automatski
generišu u runtime-u).
</p>
        <p>
Pre nego što prokomentarišem javascript code, da kažem par reči o html code-u koji
generiše standardni GridView. GridView je u stvari obična tabela tj &lt;table&gt;&lt;tr&gt;&lt;td&gt;...
konstrukcija. &lt;tr&gt; tag predstavlja red u našoj kontroli (Row) i na njega se
“lepi” OnClick event. Sam event se zapravo okida na &lt;td&gt; elementu ali se propagira
do prvog roditeljskog (parent) elementa koji ima handler tj definisan onclick a to
je &lt;tr&gt; element. I evo javascript-a koji se generiše.<br />
Da prokomentarišemo javascript.
</p>
        <p>
1:&lt;script language="javascript"&gt;<br />
2: function msel(e, o)<br />
3: {
</p>
        <p>
kreiramo referencu na skriveni (hidden) html element koji u sebi sadrži informacije
koji redovi su selektovani
</p>
        <p>
4:  var selected = document.getElementById(o); 
</p>
        <p>
Zatim kreiramo referencu prema Event-u koji je inicirao izvršenje funkcije. Ova referenca
nam treba da bi saznali koji je objekat inicirao Event i da li je pri kliku bio pritisnut
taster CTRL. Linija 6 daje neposredni objekat koji je inicirao event, u ovom slučaju
&lt;td&gt; tj ćeliju koja se nalazi unutar &lt;tr&gt; elementa. Na liniji 7 hvatamo
sam &lt;tr&gt; element koji nosi informaciju o tome koji je indeks kliknutog elementa.
</p>
        <p>
5:  e = e ? e : ((window.event) ? event : null);<br />
6:  var obj = e.target ? e.target : ((e.srcElement) ? e.srcElement : null);<br />
7:  obj = obj.parentElement ? obj.parentElement : obj.parentNode;<br />
8:  var objParent = obj.parentElement ? obj.parentElement : obj.parentNode;
</p>
        <p>
Na linijama 9 i 10  kreiramo objekte String tipa koji redom nose podatke o izabranim
redovima i o trenutno kliknutom objektu tj njegovom indeksu. 
</p>
        <p>
9:  var sel = new String(selected.value);<br />
10:  var id = new String(obj.getAttribute("index"));<br />
11:  var cssclass;<br />
12:  
</p>
        <p>
Linija 13 ispituje da li je prilikom klika bio pritisnut i taster CTRL. Ukoliko jeste
na liniji 14 proveravamo da li je red već izabran. Ukoliko jeste, ukloni ga iz liste
izabranih i promeni css klasu za tekuću liniju. U suprotnom ubaci ga na listu izabranih
i promeni css klasu.
</p>
        <p>
13:  if (e.ctrlKey) {<br />
14:   if (sel.indexOf("-" + id + "-") &gt; -1) {<br />
15:    selected.value = sel.replace("-" + id + "-", "");<br />
16:    obj.className = "CssClassRow";<br />
17:   }<br />
18:   else {<br />
19:    selected.value = sel + "-" + id + "-"; 
<br />
20:    obj.className = "CssClassRowSelected";<br />
21:   } 
<br />
22:  } 
</p>
        <p>
Ukoliko CTRL nije pritisnut (linija 23) lista izabranih indeksa svodi se na trenutno
izabran a css klase se menjaju tako da su svi objekti neselektovani.  
</p>
        <p>
23:  else { 
<br />
24:   if (sel.indexOf("-" + id + "-") &gt; -1) { 
<br />
25:    cssclass = "CssClassRow"; selected.value = ""; 
<br />
26:   } 
<br />
27:   else { 
<br />
28v    cssclass = "CssClassRowSelected"; 
<br />
29:    selected.value = "-" + id + "-"; 
<br />
30:   } 
<br />
31:   var trs = objParent.getElementsByTagName("tr");<br />
32:   for(i = 0; i &lt; trs.length; i++) 
<br />
33:    if (trs[i].getAttribute("index"))<br />
34:     trs[i].className = "CssClassRow";obj.className =
cssclass;<br />
35:    } 
<br />
36:  } 
</p>
        <p>
 Napomena: podvučeni delovi se generišu
</p>
        <p>
Funkcija  disableSelection samo ne dozvoljava da se na kliknutim redovima izvrši
selekcija teksta. Za detalje pogledajte <a href="http://www.dynamicdrive.com/dynamicindex9/noselect.htm">http://www.dynamicdrive.com/dynamicindex9/noselect.htm</a>. 
</p>
        <p>
37: function disableSelection(target) {  <br />
38:  if (typeof target.onselectstart!="undefined")   <br />
39:   target.onselectstart=function(){return false;};  <br />
40:  else if (typeof target.style.MozUserSelect!="undefined")    <br />
41:   target.style.MozUserSelect="none";   <br />
42:  else   <br />
43:   target.onmousedown=function(){return false;};  <br />
44:  target.style.cursor = "default"; 
<br />
45: } 
<br />
46:&lt;/script&gt;
</p>
        <p>
          <br />
Ok, sledeća metoda koju menjamo u odnosu na originalnu GridView klasu je OnRowCreated. 
</p>
        <p>
1:protected override void OnRowCreated(GridViewRowEventArgs e)<br />
2:{<br />
3: base.OnRowCreated(e);<br />
4:<br />
5: _id = this.PageIndex + "." + e.Row.RowIndex.ToString();<br />
6:<br />
7: if (selected != null &amp;&amp; selected.IndexOf("-" + _id + "-") &gt; -1)<br />
8:     e.Row.CssClass = CssClassRowSelected;<br />
9: else<br />
10:     e.Row.CssClass = CssClassRow;<br />
11:}
</p>
        <p>
Opet kreiramo indeks, linija 5, i ako je trenutni red u listi selektovanih onda mu
menjamo css klasu. 
</p>
        <p>
I na kraju menjamo CreateChildcontrols metodu. Zapravo samo je proširujemo. Cilj je
da između svakog postback-a očuvamo stanje selektovanih redova. 
</p>
        <p>
1:protected override void CreateChildControls()<br />
2:{
</p>
        <p>
Naravno pustimo da se kreiraju sve potrebne kontrole koje se kreiraju za GridView
(Linija 3)
</p>
        <p>
3: base.CreateChildControls();<br />
4:<br />
5: string[] selectedArray;<br />
6:<br />
7: if (!string.IsNullOrEmpty(selected))<br />
8: {
</p>
        <p>
Izdvojimo indekse redova selektovanih na client strani (linija 9.) .
</p>
        <p>
9:  selectedArray = selected.Split('-');<br />
10:
</p>
        <p>
Kreiramo listu int vrednosti koja će sadržati indekse izabranih redova.
</p>
        <p>
11:  SelectedIndexs = new List&lt;int&gt;();
</p>
        <p>
Kreiramo string niz koji će u sebi sadržati tekuću stranu i tekući index na strani.
</p>
        <p>
12:  string[] pageAndIndex;
</p>
        <p>
Za svaki element u selectedArray a na osnovu stranice i indeksa preračunamo pravi
indeks i ubacimo u  SelectedIndexs.
</p>
        <p>
13:  foreach (string s in selectedArray)<br />
14:  {<br />
15:   if (s.Length &gt; 0)<br />
16:   {<br />
17:    pageAndIndex = s.Split('.');<br />
18:    SelectedIndexs.Add(int.Parse(pageAndIndex[0]) * this.PageSize
+ int.Parse(pageAndIndex[1]));<br />
19:   }<br />
20:  }<br />
21: }<br />
22:
</p>
        <p>
Registrujemo skriveno html polje u koje upisujemo koji su izabrani redovi.
</p>
        <p>
23: this.Page.ClientScript.RegisterHiddenField(selectedKey, selected);
</p>
        <p>
Registrujemo blok sa javascript funkcijama opisanim gore.
</p>
        <p>
24: this.Page.ClientScript.RegisterClientScriptBlock( ( (System.Web.UI.WebControls.GridView)this).GetType(),
"MultiselectGridView_js", js);<br />
25:
</p>
        <p>
I na kraju na GridView kontrolu dodamo još jednu literal kontrolu koja u sebi sadrži
poziv funkcije  disableSelection koja ne dozvoljava da se selektuje tekst na
upravo kreiranoj kontroli.
</p>
        <p>
26: Literal l = new Literal();<br />
27: l.Text = "&lt;script language=\"javacript\" type=\"text/javascript\"&gt;disableSelection(document.getElementById(\""
+ this.ClientID + "\"));&lt;/script&gt;";<br />
28: this.Controls.Add(l);<br />
29:}
</p>
        <p>
I to je to, kompletan code možete da skinete <a href="http://www.vlatkovic.net/download/GridView_na_kvadrat.zip">ovde</a>.
</p>
        <img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=28414adb-3fad-487c-a3b0-c32c1566b796" />
      </body>
      <title>GridView na kvadrat -  multiselect</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,28414adb-3fad-487c-a3b0-c32c1566b796.aspx</guid>
      <link>http://www.vlatkovic.net/2008/01/15/GridView+Na+Kvadrat+Multiselect.aspx</link>
      <pubDate>Tue, 15 Jan 2008 22:41:27 GMT</pubDate>
      <description>&lt;h5&gt;I opet malo programiranja, ovog puta o proširivanju postojećih asp.net severskih
kontrola na primeru GridView-a. 
&lt;/h5&gt;
&lt;p&gt;
Cilj ovog teksta je da pokaže kako se postojeće ASP.NET serverske kontrole mogu relativno
lako dograditi tako da im se poveća funkcionalnost. Kao primer sam uzeo GridView koji
u osnovnoj postavi nema&amp;nbsp; multiselect ali uz malo dorade postaje vrlo sličan gridovima
koje srećemo u windows programiranju. Ideja je da možemo da izaberemo više redova
u GridView tako što ćemo prilikom izbora držati taster CTRL. 
&lt;/p&gt;
&lt;p&gt;
Realizacija je sledeća: kad god kliknemo na neki red u GridView kontroli izvrši se
registracija tog klika i nakon postback-a se čitaju indeksi kliknutih redova na osnovu
kojih vraćamo redove u kontroli koji su izabrani. 
&lt;/p&gt;
&lt;p&gt;
Prvi korak je da kreiramo novu klasu koja će predstavljati DataGrid sa multiselect
opcijom. Ona će biti izvedena iz&amp;nbsp; System.Web.UI.WebControls.GridView klase i
čime obezbeđujemo nasleđivanje svih osobina i metoda ove klase na koje smo navikli. 
&lt;/p&gt;
&lt;p&gt;
public class MultiSelectGridView : System.Web.UI.WebControls.GridView
&lt;/p&gt;
&lt;p&gt;
Zatim je potrebno da na svaki red koji generiše osnovna&amp;nbsp; GridView klasa “zalepimo”
onclick javascript događaj (event handler). To radimo tako što promenimo OnRowDataBound
metodu iz osnovne klase. 
&lt;/p&gt;
&lt;p&gt;
1: protected override void OnRowDataBound(GridViewRowEventArgs e)&lt;br&gt;
2:&amp;nbsp;&amp;nbsp;{&lt;br&gt;
3:&amp;nbsp;&amp;nbsp;&amp;nbsp;base.OnRowDataBound(e);&lt;br&gt;
4:&lt;br&gt;
5:&amp;nbsp;&amp;nbsp;&amp;nbsp;if (e.Row.DataItem != null)&lt;br&gt;
6:&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
7:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Row.Attributes.Add("OnClick", "msel(event)");&lt;br&gt;
8:&lt;br&gt;
9:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id = this.PageIndex + "." + e.Row.RowIndex.ToString();&lt;br&gt;
10:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Row.Attributes.Add("index", _id);&lt;br&gt;
11:&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
12:&amp;nbsp;&amp;nbsp;}
&lt;/p&gt;
&lt;p&gt;
Glavna stvar se nalazi u liniji 7, gde na Row element dodajemo atribut OnClick koji
će izvršavati msel(event) javascript funkciju na svaki klik. Javascript funkcija msel
registruje gde se izvršio click događaj i upisuje indeks kliknutog elementa u skriveno
(hidden) polje čiju vrednost ćemo kasnije, u postback-u, da parsiramo. Ovu funkciju
ćemo da kreiramo i registrujemo kasnije.&lt;br&gt;
Sledeća stvar se nalazi na linijama 9 i 10. Naime, tu kreiramo indeks elementa koji
je kliknut i vezujemo ga za sam element. Njegova konstrukcija je vrlo jednostavna,
“_id = broj stranice + tačka + indeks trenutnog reda”. Dobijeni indeks se upisuje
kao dodatni atribut u element koji predstavlja red u GridView-u.&lt;br&gt;
Da bi na klijentskoj strani znali koji red je izabran kreiramo Javascript funkciju
“msel“ koju ćemo kasije da registrujemo na strani (podvučeni delovi code-a se automatski
generišu u runtime-u).
&lt;/p&gt;
&lt;p&gt;
Pre nego što prokomentarišem javascript code, da kažem par reči o html code-u koji
generiše standardni GridView. GridView je u stvari obična tabela tj &amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;...
konstrukcija. &amp;lt;tr&amp;gt; tag predstavlja red u našoj kontroli (Row) i na njega se
“lepi” OnClick event. Sam event se zapravo okida na &amp;lt;td&amp;gt; elementu ali se propagira
do prvog roditeljskog (parent) elementa koji ima handler tj definisan onclick a to
je &amp;lt;tr&amp;gt; element. I evo javascript-a koji se generiše.&lt;br&gt;
Da prokomentarišemo javascript.
&lt;/p&gt;
&lt;p&gt;
1:&amp;lt;script language="javascript"&amp;gt;&lt;br&gt;
2:&amp;nbsp;function msel(e, o)&lt;br&gt;
3:&amp;nbsp;{
&lt;/p&gt;
&lt;p&gt;
kreiramo referencu na skriveni (hidden) html element koji u sebi sadrži informacije
koji redovi su selektovani
&lt;/p&gt;
&lt;p&gt;
4:&amp;nbsp;&amp;nbsp;var selected = document.getElementById(o); 
&lt;/p&gt;
&lt;p&gt;
Zatim kreiramo referencu prema Event-u koji je inicirao izvršenje funkcije. Ova referenca
nam treba da bi saznali koji je objekat inicirao Event i da li je pri kliku bio pritisnut
taster CTRL. Linija 6 daje neposredni objekat koji je inicirao event, u ovom slučaju
&amp;lt;td&amp;gt; tj ćeliju koja se nalazi unutar &amp;lt;tr&amp;gt; elementa. Na liniji 7 hvatamo
sam &amp;lt;tr&amp;gt; element koji nosi informaciju o tome koji je indeks kliknutog elementa.
&lt;/p&gt;
&lt;p&gt;
5:&amp;nbsp;&amp;nbsp;e = e ? e : ((window.event) ? event : null);&lt;br&gt;
6:&amp;nbsp;&amp;nbsp;var obj = e.target ? e.target : ((e.srcElement) ? e.srcElement : null);&lt;br&gt;
7:&amp;nbsp;&amp;nbsp;obj = obj.parentElement ? obj.parentElement : obj.parentNode;&lt;br&gt;
8:&amp;nbsp;&amp;nbsp;var objParent = obj.parentElement ? obj.parentElement : obj.parentNode;
&lt;/p&gt;
&lt;p&gt;
Na linijama 9 i 10&amp;nbsp; kreiramo objekte String tipa koji redom nose podatke o izabranim
redovima i o trenutno kliknutom objektu tj njegovom indeksu. 
&lt;/p&gt;
&lt;p&gt;
9:&amp;nbsp;&amp;nbsp;var sel = new String(selected.value);&lt;br&gt;
10:&amp;nbsp;&amp;nbsp;var id = new String(obj.getAttribute("index"));&lt;br&gt;
11:&amp;nbsp;&amp;nbsp;var cssclass;&lt;br&gt;
12:&amp;nbsp;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Linija 13 ispituje da li je prilikom klika bio pritisnut i taster CTRL. Ukoliko jeste
na liniji 14 proveravamo da li je red već izabran. Ukoliko jeste, ukloni ga iz liste
izabranih i promeni css klasu za tekuću liniju. U suprotnom ubaci ga na listu izabranih
i promeni css klasu.
&lt;/p&gt;
&lt;p&gt;
13:&amp;nbsp;&amp;nbsp;if (e.ctrlKey) {&lt;br&gt;
14:&amp;nbsp;&amp;nbsp;&amp;nbsp;if (sel.indexOf("-" + id + "-") &amp;gt; -1) {&lt;br&gt;
15:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selected.value = sel.replace("-" + id + "-", "");&lt;br&gt;
16:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.className = "CssClassRow";&lt;br&gt;
17:&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
18:&amp;nbsp;&amp;nbsp;&amp;nbsp;else {&lt;br&gt;
19:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selected.value = sel + "-" + id + "-"; 
&lt;br&gt;
20:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.className = "CssClassRowSelected";&lt;br&gt;
21:&amp;nbsp;&amp;nbsp;&amp;nbsp;} 
&lt;br&gt;
22:&amp;nbsp;&amp;nbsp;} 
&lt;/p&gt;
&lt;p&gt;
Ukoliko CTRL nije pritisnut (linija 23) lista izabranih indeksa svodi se na trenutno
izabran a css klase se menjaju tako da su svi objekti neselektovani.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
23:&amp;nbsp;&amp;nbsp;else { 
&lt;br&gt;
24:&amp;nbsp;&amp;nbsp;&amp;nbsp;if (sel.indexOf("-" + id + "-") &amp;gt; -1) { 
&lt;br&gt;
25:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cssclass = "CssClassRow"; selected.value = ""; 
&lt;br&gt;
26:&amp;nbsp;&amp;nbsp;&amp;nbsp;} 
&lt;br&gt;
27:&amp;nbsp;&amp;nbsp;&amp;nbsp;else { 
&lt;br&gt;
28v&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cssclass = "CssClassRowSelected"; 
&lt;br&gt;
29:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selected.value = "-" + id + "-"; 
&lt;br&gt;
30:&amp;nbsp;&amp;nbsp;&amp;nbsp;} 
&lt;br&gt;
31:&amp;nbsp;&amp;nbsp;&amp;nbsp;var trs = objParent.getElementsByTagName("tr");&lt;br&gt;
32:&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i = 0; i &amp;lt; trs.length; i++) 
&lt;br&gt;
33:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trs[i].getAttribute("index"))&lt;br&gt;
34:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trs[i].className = "CssClassRow";obj.className =
cssclass;&lt;br&gt;
35:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} 
&lt;br&gt;
36:&amp;nbsp;&amp;nbsp;} 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;Napomena: podvučeni delovi se generišu
&lt;/p&gt;
&lt;p&gt;
Funkcija&amp;nbsp; disableSelection samo ne dozvoljava da se na kliknutim redovima izvrši
selekcija teksta. Za detalje pogledajte &lt;a href="http://www.dynamicdrive.com/dynamicindex9/noselect.htm"&gt;http://www.dynamicdrive.com/dynamicindex9/noselect.htm&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
37:&amp;nbsp;function disableSelection(target) { &amp;nbsp;&lt;br&gt;
38:&amp;nbsp;&amp;nbsp;if (typeof target.onselectstart!="undefined") &amp;nbsp;&amp;nbsp;&lt;br&gt;
39:&amp;nbsp;&amp;nbsp;&amp;nbsp;target.onselectstart=function(){return false;}; &amp;nbsp;&lt;br&gt;
40:&amp;nbsp;&amp;nbsp;else if (typeof target.style.MozUserSelect!="undefined")&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br&gt;
41:&amp;nbsp;&amp;nbsp;&amp;nbsp;target.style.MozUserSelect="none";&amp;nbsp; &amp;nbsp;&lt;br&gt;
42:&amp;nbsp;&amp;nbsp;else &amp;nbsp;&amp;nbsp;&lt;br&gt;
43:&amp;nbsp;&amp;nbsp;&amp;nbsp;target.onmousedown=function(){return false;}; &amp;nbsp;&lt;br&gt;
44:&amp;nbsp;&amp;nbsp;target.style.cursor = "default"; 
&lt;br&gt;
45:&amp;nbsp;} 
&lt;br&gt;
46:&amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Ok, sledeća metoda koju menjamo u odnosu na originalnu GridView klasu je OnRowCreated. 
&lt;/p&gt;
&lt;p&gt;
1:protected override void OnRowCreated(GridViewRowEventArgs e)&lt;br&gt;
2:{&lt;br&gt;
3:&amp;nbsp;base.OnRowCreated(e);&lt;br&gt;
4:&lt;br&gt;
5:&amp;nbsp;_id = this.PageIndex + "." + e.Row.RowIndex.ToString();&lt;br&gt;
6:&lt;br&gt;
7:&amp;nbsp;if (selected != null &amp;amp;&amp;amp; selected.IndexOf("-" + _id + "-") &amp;gt; -1)&lt;br&gt;
8:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Row.CssClass = CssClassRowSelected;&lt;br&gt;
9:&amp;nbsp;else&lt;br&gt;
10:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Row.CssClass = CssClassRow;&lt;br&gt;
11:}
&lt;/p&gt;
&lt;p&gt;
Opet kreiramo indeks, linija 5, i ako je trenutni red u listi selektovanih onda mu
menjamo css klasu. 
&lt;/p&gt;
&lt;p&gt;
I na kraju menjamo CreateChildcontrols metodu. Zapravo samo je proširujemo. Cilj je
da između svakog postback-a očuvamo stanje selektovanih redova. 
&lt;/p&gt;
&lt;p&gt;
1:protected override void CreateChildControls()&lt;br&gt;
2:{
&lt;/p&gt;
&lt;p&gt;
Naravno pustimo da se kreiraju sve potrebne kontrole koje se kreiraju za GridView
(Linija 3)
&lt;/p&gt;
&lt;p&gt;
3:&amp;nbsp;base.CreateChildControls();&lt;br&gt;
4:&lt;br&gt;
5:&amp;nbsp;string[] selectedArray;&lt;br&gt;
6:&lt;br&gt;
7:&amp;nbsp;if (!string.IsNullOrEmpty(selected))&lt;br&gt;
8:&amp;nbsp;{
&lt;/p&gt;
&lt;p&gt;
Izdvojimo indekse redova selektovanih na client strani (linija 9.) .
&lt;/p&gt;
&lt;p&gt;
9:&amp;nbsp;&amp;nbsp;selectedArray = selected.Split('-');&lt;br&gt;
10:
&lt;/p&gt;
&lt;p&gt;
Kreiramo listu int vrednosti koja će sadržati indekse izabranih redova.
&lt;/p&gt;
&lt;p&gt;
11:&amp;nbsp;&amp;nbsp;SelectedIndexs = new List&amp;lt;int&amp;gt;();
&lt;/p&gt;
&lt;p&gt;
Kreiramo string niz koji će u sebi sadržati tekuću stranu i tekući index na strani.
&lt;/p&gt;
&lt;p&gt;
12:&amp;nbsp;&amp;nbsp;string[] pageAndIndex;
&lt;/p&gt;
&lt;p&gt;
Za svaki element u selectedArray a na osnovu stranice i indeksa preračunamo pravi
indeks i ubacimo u&amp;nbsp; SelectedIndexs.
&lt;/p&gt;
&lt;p&gt;
13:&amp;nbsp;&amp;nbsp;foreach (string s in selectedArray)&lt;br&gt;
14:&amp;nbsp;&amp;nbsp;{&lt;br&gt;
15:&amp;nbsp;&amp;nbsp;&amp;nbsp;if (s.Length &amp;gt; 0)&lt;br&gt;
16:&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
17:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pageAndIndex = s.Split('.');&lt;br&gt;
18:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SelectedIndexs.Add(int.Parse(pageAndIndex[0]) * this.PageSize
+ int.Parse(pageAndIndex[1]));&lt;br&gt;
19:&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
20:&amp;nbsp;&amp;nbsp;}&lt;br&gt;
21:&amp;nbsp;}&lt;br&gt;
22:
&lt;/p&gt;
&lt;p&gt;
Registrujemo skriveno html polje u koje upisujemo koji su izabrani redovi.
&lt;/p&gt;
&lt;p&gt;
23:&amp;nbsp;this.Page.ClientScript.RegisterHiddenField(selectedKey, selected);
&lt;/p&gt;
&lt;p&gt;
Registrujemo blok sa javascript funkcijama opisanim gore.
&lt;/p&gt;
&lt;p&gt;
24:&amp;nbsp;this.Page.ClientScript.RegisterClientScriptBlock( ( (System.Web.UI.WebControls.GridView)this).GetType(),
"MultiselectGridView_js", js);&lt;br&gt;
25:
&lt;/p&gt;
&lt;p&gt;
I na kraju na GridView kontrolu dodamo još jednu literal kontrolu koja u sebi sadrži
poziv funkcije&amp;nbsp; disableSelection koja ne dozvoljava da se selektuje tekst na
upravo kreiranoj kontroli.
&lt;/p&gt;
&lt;p&gt;
26:&amp;nbsp;Literal l = new Literal();&lt;br&gt;
27:&amp;nbsp;l.Text = "&amp;lt;script language=\"javacript\" type=\"text/javascript\"&amp;gt;disableSelection(document.getElementById(\""
+ this.ClientID + "\"));&amp;lt;/script&amp;gt;";&lt;br&gt;
28:&amp;nbsp;this.Controls.Add(l);&lt;br&gt;
29:}
&lt;/p&gt;
&lt;p&gt;
I to je to, kompletan code možete da skinete &lt;a href="http://www.vlatkovic.net/download/GridView_na_kvadrat.zip"&gt;ovde&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=28414adb-3fad-487c-a3b0-c32c1566b796" /&gt;</description>
      <comments>http://www.vlatkovic.net/CommentView,guid,28414adb-3fad-487c-a3b0-c32c1566b796.aspx</comments>
      <category>Programiranje;Programiranje/asp.net;Programiranje/c#</category>
    </item>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=febd87d7-69a5-42dd-bb59-1d09a7156114</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,febd87d7-69a5-42dd-bb59-1d09a7156114.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,febd87d7-69a5-42dd-bb59-1d09a7156114.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=febd87d7-69a5-42dd-bb59-1d09a7156114</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ma ne bi ja ovo napisao nego me Peđa naterao. Nedavno u neke sitne sate mi kaže „...
zapiši ovo i objavi, da ne zaboraviš, možda nekom i pomogneš...“. Zapisah i sada objavljujem.
Tiče se problema kojeg sam imao prilikom registracije mog dragog auta i u kakvu agoniju
može čovek da upadne ni kriv ni dužan. Ukratko, auto je trebao da se registruje i
prebaci sa AR na BG tablice ali broj motora nije mogao da se očita. Neverovatno je
da nigde i niko ne zna tačan postupak kako čovek da se ponaša kada se dese ovakvi
problemi. Ni lizing kuće/banke, ni tehnički pregledi, ni policija, niko vam neće dati
potpunu informaciju i jednostavan algoritam kako da postupite u situaciji a, b, c...
Ako tražite usmenu informaciju od nadležnih organa najčešće udarite u tvrdi zid neznanja
i neljubaznosti sa akcentom svaljivanja krivice što oni neznaju na vas („Hajde sad
lepo sve priznaj a Đura će da ti oprosti što te tukao“ - Balkanski špijun). Ne daj
Bože da to neko odštampa na par flajera i da podeli narodu, mnogo je skupo. 
Važno je da besno proslavimo novu godinu i potrošimo teškom mukom zarađene pare ili
pare koje nemamo. Dajte 'leba i igara pa posle nek pocrkamo.
</p>
        <p>
I evo kako se sve dešavalo.
</p>
        <p>
Četvrtak (18. oktobar 2007.)<br />
Pred kraj oktobra mi je isticala registracija. Krenem ja u akciju. Mlad mi je auto,
napunio dve godine, terali ga samo ja i žena, tip top je, mislim se, to ćemo mi za
čas. ALI. Odem na prvi tehnički pregled na koji sam naleteo (Parking servis) i tu
me strefi prvi šlog u nizu šlogova. Kažu da ne mogu da nađu serijski broj motora i
da ne mogu da obavim tehnički pregled. Ostadoh zapanjen. Natezali smo se jedno pola
sata da probaju da nađu broj ali bez uspeha. 
</p>
        <p>
Petak (19. oktobar 2007.)<br />
Sutradan ujutro odem u autokuću Hit auto gde je auto kupljen da pokušam da uradim
nešto pametno. Tamo mi kažu isto, ne može da se registruje jer se ne vidi broj motora.
Reno označava motore samo reda radi, nekim sitnim i nikakvim slovima i ne tretiraju
motor kao sastavni deo automobila već kao rezervni deo. Majstori koji su poukušali
da ga pročitaju uz pomoć šmirgle samo su ga dokusurili. Nema ‘leba, mora da se ukuca
novi broj. Ljudi u Renou mi otprilike objasne kakav je postupak dalje. Oni daju nalog
za ekspertizu vozila u SUP-u (da sup proveri da nisam ne daj Bože prepakivao delove
motora). Kada se utvrdi da je auto ok onda u Lermontovoj dobijete/platite nalog za
ukucavanje novog broja motora a to se radi u firmi Kompresor u Francuskoj ulici. Elem
odem ja sa nalogom u SUP u 29.Novembra (kako li se sada zove ta ulica). Tamo sedi
“Gospodar duša automobila” nas ubogih vozača i odrezuje sudbinu. Da pojednostavim
poesnički opis, namračen i nadrkan tip (izvinte na izrazu ali on je najbolji) sa cigarom
u zubi u mračnoj, prljavoj i hladnoj garaži sedi i uz fantastično zgražavanje prema
svojim sugrađanima a ujedno i ljudima koji ga plaćaju, uz ogromne količine cinizma,
mržnje, zlovolje objašnjava mi sledeće: “...ti si dečko (pazi dečko!) registrovao
kola u AR i to nema nikave veze sa nama, nalevo krug”. Ja opet fin, pitam šta da radim,
tražim savet najuuljudnije moguće, imam par pitanja i potpitanja. “Gospodar duša automobila”
sa ogromnom dozom smorenosti, cinizma i zlobe mi priča neku priču kako treba u AR
da mi daju nalog za ekspertizu pa da vozim šlepom auto u Kragujevac na Mašinski fakultet
gde se vrši ekspertiza dva puta nedeljno po jedan sat, utorkom i recimo sredom u 14:00.
Na kraju uspevam da iskamčim sledeću korisnu informaciju. Treba da odjavim tablice
iz AR pa da odem ponovo na tehnički gde bi mi ponovo izdali nalog za ekspertizu. Pa
onda dođem kod njih da oni pogledaju sada neregistrovan auto i procedura ide dalje.
Čujem se sa bratom Ivanom u Aranđelovcu, on se raspita i postupak je sledeći: odem
na tehnički pregled, uzmem isti papir kao za tehnički, potpišem i sa tablicama i saobraćajnom
pošaljem u AR. Hajd' jurim ponovo, sve to pokupim sa ljudima u Renou se dogovorim
da mi sutra naprave opet nalog za ekspertizu ovog puta sa odjavljenom saobraćajnom
i tablicama. Otrčim kući, skinem tablice, spakujem papire i pošaljem mom dobrom bratu
Ivanu u AR. Odnese on sve u sup, kad ne lezi vraže, pošto je auto kupljen na lizing
njima treba ovlašćenje od lizing kuće (u mom slučaju Rajfajzen) da mogu da odjavim
tablice. Zovem Rajfajzen, natežem se minimum pola sata sa nekim ćatom da pošalje ovlašćenje
SUP-a u AR a da ću ja da dođem po original. On mora da pita šefa, ne zna kako se piše
to ovlašćenje, ja mu diktiram, nerviram se, kaže mi da zovem za 5 minuta pa ga posle
nema a radno vreme SUP-a u AR je do 16:00. Na kraju se čovek smiluje, organizuje i
pošalje faks u AR. Sve u poslednjem trenutku. Tačno u 16:00 Ivan me zove i kaže da
smo zakasnili i da su službenici otišli kući. Zaćutah tri sekunde i onda se sa druge
strane začuo urlik koji je govorio “naivčino” :-) sve je bilo gotovo i saobraćajna
će mi stići kasnije tog dana. Laknulo mi je, još i vikend predamnom da se skupi malo
snage.
</p>
        <p>
Subota (20.oktobar 2007.<br />
Po dogovoru odlazim u Reno da mi na osnovu odjavljene saobraćajne dozvole naprave
nalog za ekspertizu na koju sam planirao da idem u ponedeljak ranom zorom. Odem tako
kad ne radi sistem. Počnem da čupam kosu, “...kako bre ne radi sistem, gde je comp
jel mogu da pogledam..”. Sve može dok se čeka “programer” da reši problem. Sednem
za komp i posle par minuta čačkanja ukapiram da nema vezu sa serverom. Počnem da pratim
kablove po kancelariji, naiđem na vazdušni switch (za neupućene, deo mrežne opreme
zadužen za povezivanje računara u mrežu, koji visi na nekim polu iščupanim kablovima
u nekom prašnjavom ćošku, česta meta zlih čistačica). Krenem da pritežem kablove,
resetujem mašinu i posle par minuta sistem proradi! Aleluja, odštampasmo nalog i ja
srećan krenem kući. Krenem kući lagano i kod Sava centra se na mene ustreme dva pandura
sa onim bahatim “ličnu kartu, šta nosiš u torbi”. Od muke počnem da se smejem kad
me jedan od njih (krupniji magarac) pita onako kabadahijski i preteće “šta je smešno”
I tu mi pukne film, kažem mu ja da je ovo slobodna zemlja i da mogu da se smejem kad
hoću i kome hoću i da me boli... Ovaj me je gledao tupo par sekundi i uto ovaj sitniji,
valjda i malo pametniji spusti loptu i reče rmpaliji da krenu. Ja onako stojim i zurim
u njih dok odlaze i pitam se da nije neko organizovao neku bolesnu skrivenu kameru,
nadrealno... Dođem kući, izljubim ženu i dete i bi mi lakše.
</p>
        <p>
Nedelja (21. oktobar 2007.)<br />
Malo odmora i planiranje kojim skrovitim putem bez tablica da se domognem ozloglašene
jazbine “Gospodara duša automobila” u ulici 29. novembra. 
</p>
        <p>
Ponedeljak (22. oktobar 2007.)<br />
Još nije svanulo ali valja nam putovati. Preko Zvezdare, Novog groblja, Bogoslovije
stižem do SUP-a. Parkiram kola i krećem u raspitivanje kada počinju da rade. Probudim
policajca u kućici na ćošku, reče mi čovek da sam poranio ali nema veze, poučen i
istreniram kao pravi Srbin strpljivo čekam. Uskoro počinju da se pojavljuju drugi
sapatnici da zajedno drhtimo sa svojim malenim automobilima ispred jazbine znate već
koga. Priče su razne, slične mojoj, ljudi kivni kako ih šetaju zezaju, vraćaju sa
registracija zbog gluposti a svi radimo i nemamo vremena za gubljenje. Šta mog gazdu,
tada u Švedskoj, briga što smo mi nenormalni. Oko devet se pojavljuje Onaj sa svitom,
mi ponizno i u tišni predajemo papire i povlačimo se uz naklon da ne bi smo slučajno
izazvali Njegov gnev i nastradali. Izvođenje rituala je najzad počinje. Naravno, he,
pre nas je ušlo par debelih mercedesova i BMW-ova koje su vozile ćelave glave koje
ona dva dripca iz Subote ne bi zaustavila u životu, nego bi verovatno pili kafu sa
njima. Dolazim na red, On baci pogled od 0.5 ispod haube i kaže da izvezem auto napolje.
Šta da kažem, čovek je ekspert. Tako je bilo sa svima. Kada su svi završili čekali
smo da načelnik potpiše rešenja i da trčimo u Ljermontovu da završimo ostatak posla.
Plupropisno parkiram auto bez tablica blizu SUP-a i napokon, posle sat vremena stižem
u  Ljermontovu. Tamo sledi popunjavanje uplatnica i plaćanje taksi na sve i svašta.
Ulazim u kancelariju gde se izdaju nalozi za čuveno prekucavanje broja i tu mi saopštavaju
da mi treba ovlašćenje od lizinga da prekucam broj. Pokunjim se i sednem na bus pa
na Tošin bunar u Lizing. Oni me naravno belo gledaju, neznaju kako da napišu ovlašćenje,
opet cirkus ali na kraju ga dobijem pa nazad u Ljermontovu. Sačekam red i najzad dobijem
nalog za kucanje broja. Sjurim se do 29. Novembra, sednem u auto i odem do Kompresora
na ukucavanje. Tamo naravno red “kano klisurine”, sačekam i tu, ukucaju mi brojeve
i odjurim u prvi servis sa tehničkim pregledom da završim i tu fazu. Tu uvek sedi
neki polupismen duhoviti šimpanza koji sve zna i koji će sve papire da mi pripremi
za registraciju “ma ne brini burazere”. Pripremi mi on, ja na taksi u sup Vračar da
konačno uzmem tablice. Za divno čudo odmah dođem na red predam sav srećan papire koje
mi šalterska službenica vrati nazad uz minut sa rečima “...ne može, fali ovlašćenje
od Lizinga za preregistraciju vozila”. Molim, kumim, ali ne vredi. Već polulud, smejem
se samom sebi kao ludak, hvatam taksi i jurim u Lizing, reči taksiste su mi slaba
uteha. Sačeka me čovek, vrati nazad sa ovlašćenjem koga opet nisu umeli da napišu...
Stižem u sup Vrčar kad tamo “red kano klisurina”. Popodne radi samo jedna službenica
na regostracijama. Vrlo inteligentno, mislim se u sebi. Tri ih radi pre podne i za
vreme našeg radnog vremena a kada mi imamo vremena da dođemo i kada je najveća gužva
radi samo jedna. Eh, stanem u red, slušam kako veselo odjekuje zvuk pisaće mašine
iz susedne sobe, pitam se gde su im silni računari, 21. vek itd i isključim mozak
da ne bi izgoreo. Nešto pre sedam sati uzimam tablice i saobraćajnu, odem do parkinga
gde sam ostavio auto i oko osam uveče stignem kući. Izljubim ženu i dete i bi mi lakše.
</p>
        <p>
Epilog (23. oktobar 2007.)<br />
Pregledam kući papire, posle natenane, vidim da su uzeli pogrešna ovlašćenja u SUP-u
Vračar, mislim se, niste ni morali da me cimate da opet idem u nesrećni Lizing. 
<br />
Razmišljao sam tih dana da napišem zapis na blogu ali sam se mislio da je nepotrebno
da smaram narod sa nečim što je svako od nas već verovatno više puta proživeo. A i
strašno me je mrzelo. No, eto, Peđa me je naterao. Da zapišem da ljudi znaju šta da
rade ako im se slično desi. Hajde, mislim se ja, možda učinim dobro delo...
</p>
        <img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=febd87d7-69a5-42dd-bb59-1d09a7156114" />
      </body>
      <title>Registruj me nežno</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,febd87d7-69a5-42dd-bb59-1d09a7156114.aspx</guid>
      <link>http://www.vlatkovic.net/2008/01/08/Registruj+Me+Ne%c5%beno.aspx</link>
      <pubDate>Tue, 08 Jan 2008 09:32:16 GMT</pubDate>
      <description>&lt;p&gt;
Ma ne bi ja ovo napisao nego me Peđa naterao. Nedavno u neke sitne sate mi kaže „...
zapiši ovo i objavi, da ne zaboraviš, možda nekom i pomogneš...“. Zapisah i sada objavljujem.
Tiče se problema kojeg sam imao prilikom registracije mog dragog auta i u kakvu agoniju
može čovek da upadne ni kriv ni dužan. Ukratko, auto je trebao da se registruje i
prebaci sa AR na BG tablice ali broj motora nije mogao da se očita. Neverovatno je
da nigde i niko ne zna tačan postupak kako čovek da se ponaša kada se dese ovakvi
problemi. Ni lizing kuće/banke, ni tehnički pregledi, ni policija, niko vam neće dati
potpunu informaciju i jednostavan algoritam kako da postupite u situaciji a, b, c...
Ako tražite usmenu informaciju od nadležnih organa najčešće udarite u tvrdi zid neznanja
i neljubaznosti sa akcentom svaljivanja krivice što oni neznaju na vas („Hajde sad
lepo sve priznaj a Đura će da ti oprosti što te tukao“ - Balkanski špijun). Ne daj
Bože da to neko odštampa na par flajera i da podeli narodu, mnogo je skupo.&amp;nbsp;
Važno je da besno proslavimo novu godinu i potrošimo teškom mukom zarađene pare ili
pare koje nemamo. Dajte 'leba i igara pa posle nek pocrkamo.
&lt;/p&gt;
&lt;p&gt;
I evo kako se sve dešavalo.
&lt;/p&gt;
&lt;p&gt;
Četvrtak (18. oktobar 2007.)&lt;br&gt;
Pred kraj oktobra mi je isticala registracija. Krenem ja u akciju. Mlad mi je auto,
napunio dve godine, terali ga samo ja i žena, tip top je, mislim se, to ćemo mi za
čas. ALI. Odem na prvi tehnički pregled na koji sam naleteo (Parking servis) i tu
me strefi prvi šlog u nizu šlogova. Kažu da ne mogu da nađu serijski broj motora i
da ne mogu da obavim tehnički pregled. Ostadoh zapanjen. Natezali smo se jedno pola
sata da probaju da nađu broj ali bez uspeha. 
&lt;/p&gt;
&lt;p&gt;
Petak (19. oktobar 2007.)&lt;br&gt;
Sutradan ujutro odem u autokuću Hit auto gde je auto kupljen da pokušam da uradim
nešto pametno. Tamo mi kažu isto, ne može da se registruje jer se ne vidi broj motora.
Reno označava motore samo reda radi, nekim sitnim i nikakvim slovima i ne tretiraju
motor kao sastavni deo automobila već kao rezervni deo. Majstori koji su poukušali
da ga pročitaju uz pomoć šmirgle samo su ga dokusurili. Nema ‘leba, mora da se ukuca
novi broj. Ljudi u Renou mi otprilike objasne kakav je postupak dalje. Oni daju nalog
za ekspertizu vozila u SUP-u (da sup proveri da nisam ne daj Bože prepakivao delove
motora). Kada se utvrdi da je auto ok onda u Lermontovoj dobijete/platite nalog za
ukucavanje novog broja motora a to se radi u firmi Kompresor u Francuskoj ulici. Elem
odem ja sa nalogom u SUP u 29.Novembra (kako li se sada zove ta ulica). Tamo sedi
“Gospodar duša automobila” nas ubogih vozača i odrezuje sudbinu. Da pojednostavim
poesnički opis, namračen i nadrkan tip (izvinte na izrazu ali on je najbolji) sa cigarom
u zubi u mračnoj, prljavoj i hladnoj garaži sedi i uz fantastično zgražavanje prema
svojim sugrađanima a ujedno i ljudima koji ga plaćaju, uz ogromne količine cinizma,
mržnje, zlovolje objašnjava mi sledeće: “...ti si dečko (pazi dečko!) registrovao
kola u AR i to nema nikave veze sa nama, nalevo krug”. Ja opet fin, pitam šta da radim,
tražim savet najuuljudnije moguće, imam par pitanja i potpitanja. “Gospodar duša automobila”
sa ogromnom dozom smorenosti, cinizma i zlobe mi priča neku priču kako treba u AR
da mi daju nalog za ekspertizu pa da vozim šlepom auto u Kragujevac na Mašinski fakultet
gde se vrši ekspertiza dva puta nedeljno po jedan sat, utorkom i recimo sredom u 14:00.
Na kraju uspevam da iskamčim sledeću korisnu informaciju. Treba da odjavim tablice
iz AR pa da odem ponovo na tehnički gde bi mi ponovo izdali nalog za ekspertizu. Pa
onda dođem kod njih da oni pogledaju sada neregistrovan auto i procedura ide dalje.
Čujem se sa bratom Ivanom u Aranđelovcu, on se raspita i postupak je sledeći: odem
na tehnički pregled, uzmem isti papir kao za tehnički, potpišem i sa tablicama i saobraćajnom
pošaljem u AR. Hajd' jurim ponovo, sve to pokupim sa ljudima u Renou se dogovorim
da mi sutra naprave opet nalog za ekspertizu ovog puta sa odjavljenom saobraćajnom
i tablicama. Otrčim kući, skinem tablice, spakujem papire i pošaljem mom dobrom bratu
Ivanu u AR. Odnese on sve u sup, kad ne lezi vraže, pošto je auto kupljen na lizing
njima treba ovlašćenje od lizing kuće (u mom slučaju Rajfajzen) da mogu da odjavim
tablice. Zovem Rajfajzen, natežem se minimum pola sata sa nekim ćatom da pošalje ovlašćenje
SUP-a u AR a da ću ja da dođem po original. On mora da pita šefa, ne zna kako se piše
to ovlašćenje, ja mu diktiram, nerviram se, kaže mi da zovem za 5 minuta pa ga posle
nema a radno vreme SUP-a u AR je do 16:00. Na kraju se čovek smiluje, organizuje i
pošalje faks u AR. Sve u poslednjem trenutku. Tačno u 16:00 Ivan me zove i kaže da
smo zakasnili i da su službenici otišli kući. Zaćutah tri sekunde i onda se sa druge
strane začuo urlik koji je govorio “naivčino” :-) sve je bilo gotovo i saobraćajna
će mi stići kasnije tog dana. Laknulo mi je, još i vikend predamnom da se skupi malo
snage.
&lt;/p&gt;
&lt;p&gt;
Subota (20.oktobar 2007.&lt;br&gt;
Po dogovoru odlazim u Reno da mi na osnovu odjavljene saobraćajne dozvole naprave
nalog za ekspertizu na koju sam planirao da idem u ponedeljak ranom zorom. Odem tako
kad ne radi sistem. Počnem da čupam kosu, “...kako bre ne radi sistem, gde je comp
jel mogu da pogledam..”. Sve može dok se čeka “programer” da reši problem. Sednem
za komp i posle par minuta čačkanja ukapiram da nema vezu sa serverom. Počnem da pratim
kablove po kancelariji, naiđem na vazdušni switch (za neupućene, deo mrežne opreme
zadužen za povezivanje računara u mrežu, koji visi na nekim polu iščupanim kablovima
u nekom prašnjavom ćošku, česta meta zlih čistačica). Krenem da pritežem kablove,
resetujem mašinu i posle par minuta sistem proradi! Aleluja, odštampasmo nalog i ja
srećan krenem kući. Krenem kući lagano i kod Sava centra se na mene ustreme dva pandura
sa onim bahatim “ličnu kartu, šta nosiš u torbi”. Od muke počnem da se smejem kad
me jedan od njih (krupniji magarac) pita onako kabadahijski i preteće “šta je smešno”
I tu mi pukne film, kažem mu ja da je ovo slobodna zemlja i da mogu da se smejem kad
hoću i kome hoću i da me boli... Ovaj me je gledao tupo par sekundi i uto ovaj sitniji,
valjda i malo pametniji spusti loptu i reče rmpaliji da krenu. Ja onako stojim i zurim
u njih dok odlaze i pitam se da nije neko organizovao neku bolesnu skrivenu kameru,
nadrealno... Dođem kući, izljubim ženu i dete i bi mi lakše.
&lt;/p&gt;
&lt;p&gt;
Nedelja (21. oktobar 2007.)&lt;br&gt;
Malo odmora i planiranje kojim skrovitim putem bez tablica da se domognem ozloglašene
jazbine “Gospodara duša automobila” u ulici 29. novembra. 
&lt;/p&gt;
&lt;p&gt;
Ponedeljak (22. oktobar 2007.)&lt;br&gt;
Još nije svanulo ali valja nam putovati. Preko Zvezdare, Novog groblja, Bogoslovije
stižem do SUP-a. Parkiram kola i krećem u raspitivanje kada počinju da rade. Probudim
policajca u kućici na ćošku, reče mi čovek da sam poranio ali nema veze, poučen i
istreniram kao pravi Srbin strpljivo čekam. Uskoro počinju da se pojavljuju drugi
sapatnici da zajedno drhtimo sa svojim malenim automobilima ispred jazbine znate već
koga. Priče su razne, slične mojoj, ljudi kivni kako ih šetaju zezaju, vraćaju sa
registracija zbog gluposti a svi radimo i nemamo vremena za gubljenje. Šta mog gazdu,
tada u Švedskoj, briga što smo mi nenormalni. Oko devet se pojavljuje Onaj sa svitom,
mi ponizno i u tišni predajemo papire i povlačimo se uz naklon da ne bi smo slučajno
izazvali Njegov gnev i nastradali. Izvođenje rituala je najzad počinje. Naravno, he,
pre nas je ušlo par debelih mercedesova i BMW-ova koje su vozile ćelave glave koje
ona dva dripca iz Subote ne bi zaustavila u životu, nego bi verovatno pili kafu sa
njima. Dolazim na red, On baci pogled od 0.5 ispod haube i kaže da izvezem auto napolje.
Šta da kažem, čovek je ekspert. Tako je bilo sa svima. Kada su svi završili čekali
smo da načelnik potpiše rešenja i da trčimo u Ljermontovu da završimo ostatak posla.
Plupropisno parkiram auto bez tablica blizu SUP-a i napokon, posle sat vremena stižem
u&amp;nbsp; Ljermontovu. Tamo sledi popunjavanje uplatnica i plaćanje taksi na sve i svašta.
Ulazim u kancelariju gde se izdaju nalozi za čuveno prekucavanje broja i tu mi saopštavaju
da mi treba ovlašćenje od lizinga da prekucam broj. Pokunjim se i sednem na bus pa
na Tošin bunar u Lizing. Oni me naravno belo gledaju, neznaju kako da napišu ovlašćenje,
opet cirkus ali na kraju ga dobijem pa nazad u Ljermontovu. Sačekam red i najzad dobijem
nalog za kucanje broja. Sjurim se do 29. Novembra, sednem u auto i odem do Kompresora
na ukucavanje. Tamo naravno red “kano klisurine”, sačekam i tu, ukucaju mi brojeve
i odjurim u prvi servis sa tehničkim pregledom da završim i tu fazu. Tu uvek sedi
neki polupismen duhoviti šimpanza koji sve zna i koji će sve papire da mi pripremi
za registraciju “ma ne brini burazere”. Pripremi mi on, ja na taksi u sup Vračar da
konačno uzmem tablice. Za divno čudo odmah dođem na red predam sav srećan papire koje
mi šalterska službenica vrati nazad uz minut sa rečima “...ne može, fali ovlašćenje
od Lizinga za preregistraciju vozila”. Molim, kumim, ali ne vredi. Već polulud, smejem
se samom sebi kao ludak, hvatam taksi i jurim u Lizing, reči taksiste su mi slaba
uteha. Sačeka me čovek, vrati nazad sa ovlašćenjem koga opet nisu umeli da napišu...
Stižem u sup Vrčar kad tamo “red kano klisurina”. Popodne radi samo jedna službenica
na regostracijama. Vrlo inteligentno, mislim se u sebi. Tri ih radi pre podne i za
vreme našeg radnog vremena a kada mi imamo vremena da dođemo i kada je najveća gužva
radi samo jedna. Eh, stanem u red, slušam kako veselo odjekuje zvuk pisaće mašine
iz susedne sobe, pitam se gde su im silni računari, 21. vek itd i isključim mozak
da ne bi izgoreo. Nešto pre sedam sati uzimam tablice i saobraćajnu, odem do parkinga
gde sam ostavio auto i oko osam uveče stignem kući. Izljubim ženu i dete i bi mi lakše.
&lt;/p&gt;
&lt;p&gt;
Epilog (23. oktobar 2007.)&lt;br&gt;
Pregledam kući papire, posle natenane, vidim da su uzeli pogrešna ovlašćenja u SUP-u
Vračar, mislim se, niste ni morali da me cimate da opet idem u nesrećni Lizing. 
&lt;br&gt;
Razmišljao sam tih dana da napišem zapis na blogu ali sam se mislio da je nepotrebno
da smaram narod sa nečim što je svako od nas već verovatno više puta proživeo. A i
strašno me je mrzelo. No, eto, Peđa me je naterao. Da zapišem da ljudi znaju šta da
rade ako im se slično desi. Hajde, mislim se ja, možda učinim dobro delo...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=febd87d7-69a5-42dd-bb59-1d09a7156114" /&gt;</description>
      <comments>http://www.vlatkovic.net/CommentView,guid,febd87d7-69a5-42dd-bb59-1d09a7156114.aspx</comments>
      <category>Svakodnevica</category>
    </item>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=de9b21c5-d926-43e8-a6f6-750fbe204498</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,de9b21c5-d926-43e8-a6f6-750fbe204498.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,de9b21c5-d926-43e8-a6f6-750fbe204498.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=de9b21c5-d926-43e8-a6f6-750fbe204498</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p align="left">
Danas se navršilo tačno tri meseca i jedan dan od Miloševog rođenja pa evo jednog
zapisa na temu roditeljovanja. 
</p>
        <img style="PADDING-LEFT: 15px" src="http://www.vlatkovic.net/content/binary/Milos_ng_20071.jpg" align="right" border="0" />
        <p>
Pitanje koje nam ljudi najčešće postavljaju u zadnje je vreme kakvi su nam utisci
kao novopečenim roditeljima. Pa jedino mogu reći da su izvanredni, naravno. Naporno
je, ali divno i svakim danom je sve bolje i bolje. Posle početne zbunjenosti i neznanja
sada smo već stare kajle ili iskusne kuke :-) pa stoga mogu reći da je, u suštini,
roditeljstvo jako jednostavna i logična stvar :-). Ha ha ha, reći će svi iskusni roditelji.
No ono što sam do sada video i iskusio samo potvrđuje ovu  izjavu :-). Kada dete
satima neutešno plače to ne znači da je besno, da tera inat ili eto plače tek tako.
Ono plače, trza se, ječi i ne spava kada mu nešto fali. To što nismo umeli da prepoznamo
pravi uzrok problema nije značilo da je dete svojeglavo ili lošeg karaktera. Naprotiv.
Naši problemi su se u najvećem broju slučajeva svodili na to da uzroke nismo na vreme
uočili, protumačili i na posletku reagovali. Eh, kad se samo setim posle koliko pređenih
kilometara i sa rukama otegnutim kao u orangutana ukapiram da je dete napravilo“štetu“
ili da ne bi bilo loše da mu malo savijem nogice uz stomak ne bi li ispustilo gasove.
U stvari sve se svede na to da svaki dan rešavate neku vrstu testa inteligencije.
Moram da se pohvalim da smo iz dana u dan sve bolji i bolji. 
</p>
        <p>
Trudimo se da se što više zezamo. Eto tako u tom zezanju je mališa dobio više nadimaka
a sve u zavisnosti od izraza lica, agregatnog stanja u kome ga nalazimo ili zvukova
koje ispušta (da, da progovorili smo) :-) Evo nekih:
</p>
        <ul>
          <li>
Sumpor, posle obilnog i bučnog izbacivanja gasova 
</li>
          <li>
Vulkan, posle obilnog izbacivanja kake 
</li>
          <li>
Plankton, onako mali, miran kao bubica, samo promatra i “kuži svijet” 
</li>
          <li>
Jupiter/Jupi, gasni džin, stanje koje prethodi stanju Sumpora 
</li>
          <li>
Karlito, kada je mnogo glaaaadan 
</li>
          <li>
Vakuum, faza kada nešto stavi u usta i tako čvrsto drži da je to prosto zapanjujuće 
</li>
          <li>
Gaj Gaj, fraza koju vrlo često voli da izgovara</li>
        </ul>
        <p>
Gledamo da sve mučne radnje radimo uz što je moguće bogatiju koreografiju, zvučnu,
plesnu, pantomimičnu. Igramo se mora, imamo čas fizičkog, krijemo se, letimo... ne
mogu svega ni da se setim. Naravno, sve dečje pesmice smo naučili napamet. Kada se
teško uspavljujemo pevamo do prestanka rada pluća (ovo izjavljuje nekad vrlo aktivan
horski pevač... kuku). 
</p>
        <p>
I da sumiram: za tri meseca smo se jednom razboleli, primili dve vakcine, prebacili
6 kg težine i 60 cm visine i počeli da gučemo. Zadovoljni smo!
</p>
        <p>
Srećna Nova godina,
</p>
        <p>
         Miloša, Ana i Peca.  
</p>
        <img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=de9b21c5-d926-43e8-a6f6-750fbe204498" />
      </body>
      <title>Velika tri meseca</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,de9b21c5-d926-43e8-a6f6-750fbe204498.aspx</guid>
      <link>http://www.vlatkovic.net/2007/12/27/Velika+Tri+Meseca.aspx</link>
      <pubDate>Thu, 27 Dec 2007 22:31:00 GMT</pubDate>
      <description>&lt;p align=left&gt;
Danas se navršilo tačno tri meseca i jedan dan od Miloševog rođenja pa evo jednog
zapisa na temu roditeljovanja. 
&lt;/p&gt;
&lt;img style="PADDING-LEFT: 15px" src="http://www.vlatkovic.net/content/binary/Milos_ng_20071.jpg" align=right border=0&gt; 
&lt;p&gt;
Pitanje koje nam ljudi najčešće postavljaju u zadnje je vreme kakvi su nam utisci
kao novopečenim roditeljima. Pa jedino mogu reći da su izvanredni, naravno. Naporno
je, ali divno i svakim danom je sve bolje i bolje. Posle početne zbunjenosti i neznanja
sada smo već stare kajle ili iskusne kuke&amp;nbsp;:-) pa stoga mogu reći da je, u suštini,
roditeljstvo jako jednostavna i logična stvar :-). Ha ha ha, reći će svi iskusni roditelji.
No ono što sam do sada video i iskusio samo potvrđuje ovu&amp;nbsp; izjavu :-). Kada dete
satima neutešno plače to ne znači da je besno, da tera inat ili eto plače tek tako.
Ono plače, trza se, ječi i ne spava kada mu nešto fali. To što nismo umeli da prepoznamo
pravi uzrok problema nije značilo da je dete svojeglavo ili lošeg karaktera. Naprotiv.
Naši problemi su se u najvećem broju slučajeva svodili na to da uzroke nismo na vreme
uočili, protumačili i na posletku reagovali. Eh, kad se samo setim posle koliko pređenih
kilometara i sa rukama otegnutim kao u orangutana ukapiram da je dete napravilo“štetu“
ili da ne bi bilo loše da mu malo savijem nogice uz stomak ne bi li ispustilo gasove.
U stvari sve se svede na to da svaki dan rešavate neku vrstu testa inteligencije.
Moram da se pohvalim da smo iz dana u dan sve bolji i bolji. 
&lt;/p&gt;
&lt;p&gt;
Trudimo se da se što više zezamo. Eto tako u tom zezanju je mališa dobio više nadimaka
a sve u zavisnosti od izraza lica, agregatnog stanja u kome ga nalazimo ili zvukova
koje ispušta (da, da progovorili smo) :-) Evo nekih:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Sumpor, posle obilnog i bučnog izbacivanja gasova 
&lt;li&gt;
Vulkan, posle obilnog izbacivanja kake 
&lt;li&gt;
Plankton, onako mali, miran kao bubica, samo promatra i “kuži svijet” 
&lt;li&gt;
Jupiter/Jupi, gasni džin, stanje koje prethodi stanju Sumpora 
&lt;li&gt;
Karlito, kada je mnogo glaaaadan 
&lt;li&gt;
Vakuum, faza kada nešto stavi u usta i tako čvrsto drži da je to prosto zapanjujuće 
&lt;li&gt;
Gaj Gaj, fraza koju vrlo često voli da izgovara&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Gledamo da sve mučne radnje radimo uz što je moguće bogatiju koreografiju, zvučnu,
plesnu, pantomimičnu. Igramo se mora, imamo čas fizičkog, krijemo se, letimo... ne
mogu svega ni da se setim. Naravno, sve dečje pesmice smo naučili napamet. Kada se
teško uspavljujemo pevamo do prestanka rada pluća (ovo izjavljuje nekad vrlo aktivan
horski pevač... kuku). 
&lt;/p&gt;
&lt;p&gt;
I da sumiram: za tri meseca smo se jednom razboleli, primili dve vakcine, prebacili
6 kg težine i 60 cm visine i počeli da gučemo. Zadovoljni smo!
&lt;/p&gt;
&lt;p&gt;
Srećna Nova godina,
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miloša, Ana i Peca.&amp;nbsp; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=de9b21c5-d926-43e8-a6f6-750fbe204498" /&gt;</description>
      <comments>http://www.vlatkovic.net/CommentView,guid,de9b21c5-d926-43e8-a6f6-750fbe204498.aspx</comments>
      <category>Porodica</category>
    </item>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=f2176095-fe12-4ee7-ad5f-93282cdbcf88</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,f2176095-fe12-4ee7-ad5f-93282cdbcf88.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,f2176095-fe12-4ee7-ad5f-93282cdbcf88.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=f2176095-fe12-4ee7-ad5f-93282cdbcf88</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Moja drugarica <a href="http://www.bebika.com">Bebika</a> opet ima jako interesantan <a href="http://www.bebika.com/blog/svakodnevnica/da-li-si-david/">post</a>.
Pročitajte i prosledite. Da ne tupim, ona je super objasnila celu stvar.
</p>
        <p>
Bebi, svaka čast!<br /></p>
        <img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=f2176095-fe12-4ee7-ad5f-93282cdbcf88" />
      </body>
      <title>"Da li si David?"</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,f2176095-fe12-4ee7-ad5f-93282cdbcf88.aspx</guid>
      <link>http://www.vlatkovic.net/2007/12/24/Da+Li+Si+David.aspx</link>
      <pubDate>Mon, 24 Dec 2007 12:40:50 GMT</pubDate>
      <description>&lt;p&gt;
Moja drugarica &lt;a href="http://www.bebika.com"&gt;Bebika&lt;/a&gt; opet ima jako interesantan &lt;a href="http://www.bebika.com/blog/svakodnevnica/da-li-si-david/"&gt;post&lt;/a&gt;.
Pročitajte i prosledite. Da ne tupim, ona je super objasnila celu stvar.
&lt;/p&gt;
&lt;p&gt;
Bebi, svaka čast!&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=f2176095-fe12-4ee7-ad5f-93282cdbcf88" /&gt;</description>
      <comments>http://www.vlatkovic.net/CommentView,guid,f2176095-fe12-4ee7-ad5f-93282cdbcf88.aspx</comments>
      <category>Svakodnevica</category>
    </item>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=7630550c-0fc6-406f-bd3b-5ce906a48ef8</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,7630550c-0fc6-406f-bd3b-5ce906a48ef8.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,7630550c-0fc6-406f-bd3b-5ce906a48ef8.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=7630550c-0fc6-406f-bd3b-5ce906a48ef8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ovo je mali dodatak <a href="http://www.vlatkovic.net/2007/12/16/Vidni+Atelje+Visual+Studio+Kre%c4%8denje+I+Ure%c4%91enje.aspx">tekstu</a> o
podešavanju Visual Studio-a, ali važan. Nekada je u VS postojala opcija “Synchronize
class view” koja je jako korisna kada imate malo složeniji klasni model od običnog
Code Front – Code Behind modela. Kada ste u kodu klase i kliknete desnim dugmetom,
izborom opcije “Synchronize class view” pozicionirate se u stablu klasa Class View-u.
E ta je opcija uklonjena iz kontekstnog menija (onaj na desni klik) ali, 'vala Bogu,
nije ukinuta. Evo kako da je vratite tamo gde treba.
</p>
        <p>
Otvorite Visual Studio -&gt; Options -&gt; Customize i kliknite na “Context menus”
u list Toolbars 
</p>
        <p>
          <img src="http://www.vlatkovic.net/content/binary/vs_sync1.gif" border="0" />
        </p>
        <p>
Pređite na Commands, drugi tab u Customize dijalogu. Ujedno će se pojaviti i novi
Toolbar.
</p>
        <p>
          <img src="http://www.vlatkovic.net/content/binary/vs_sync3.gif" border="0" />
        </p>
        <p>
          <img src="http://www.vlatkovic.net/content/binary/vs_sync2.gif" border="0" />
        </p>
        <p>
U listi Categories izaberite View a sa desne strane nađite “Synchronize Class View”.
Kliknite na tu stavku, držite miša i prevucite Synchronize Class View komandu na toolbar
koji se pojavio u sledećem koraku i to u Editor Context Menu -&gt; Code Window. Spustite
komandu gde mislite da vam je najpogodnije, recimo ispod “Go To Reference” komande.  
</p>
        <p>
          <img src="http://www.vlatkovic.net/content/binary/vs_sync4.gif" border="0" />
        </p>
        <p>
Zatvorite Customize dijalog i to je to, srećno sinhronisanje.
</p>
        <img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=7630550c-0fc6-406f-bd3b-5ce906a48ef8" />
      </body>
      <title>Pixi sinhroniši!</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,7630550c-0fc6-406f-bd3b-5ce906a48ef8.aspx</guid>
      <link>http://www.vlatkovic.net/2007/12/22/Pixi+Sinhroni%c5%a1i.aspx</link>
      <pubDate>Sat, 22 Dec 2007 22:07:36 GMT</pubDate>
      <description>&lt;p&gt;
Ovo je mali dodatak &lt;a href="http://www.vlatkovic.net/2007/12/16/Vidni+Atelje+Visual+Studio+Kre%c4%8denje+I+Ure%c4%91enje.aspx"&gt;tekstu&lt;/a&gt; o
podešavanju Visual Studio-a, ali važan. Nekada je u VS postojala opcija “Synchronize
class view” koja je jako korisna kada imate malo složeniji klasni model od običnog
Code Front – Code Behind modela. Kada ste u kodu klase i kliknete desnim dugmetom,
izborom opcije “Synchronize class view” pozicionirate se u stablu klasa Class View-u.
E ta je opcija uklonjena iz kontekstnog menija (onaj na desni klik) ali, 'vala Bogu,
nije ukinuta. Evo kako da je vratite tamo gde treba.
&lt;/p&gt;
&lt;p&gt;
Otvorite Visual Studio -&amp;gt; Options -&amp;gt; Customize i kliknite na “Context menus”
u list Toolbars 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.vlatkovic.net/content/binary/vs_sync1.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Pređite na Commands, drugi tab u Customize dijalogu. Ujedno će se pojaviti i novi
Toolbar.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.vlatkovic.net/content/binary/vs_sync3.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.vlatkovic.net/content/binary/vs_sync2.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
U listi Categories izaberite View a sa desne strane nađite “Synchronize Class View”.
Kliknite na tu stavku, držite miša i prevucite Synchronize Class View komandu na toolbar
koji se pojavio u sledećem koraku i to u Editor Context Menu -&amp;gt; Code Window. Spustite
komandu gde mislite da vam je najpogodnije, recimo ispod “Go To Reference” komande.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.vlatkovic.net/content/binary/vs_sync4.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Zatvorite Customize dijalog i to je to, srećno sinhronisanje.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=7630550c-0fc6-406f-bd3b-5ce906a48ef8" /&gt;</description>
      <comments>http://www.vlatkovic.net/CommentView,guid,7630550c-0fc6-406f-bd3b-5ce906a48ef8.aspx</comments>
      <category>Programiranje/Alati</category>
    </item>
    <item>
      <trackback:ping>http://www.vlatkovic.net/Trackback.aspx?guid=255a9be2-18f0-4eb9-b683-eb71287e4614</trackback:ping>
      <pingback:server>http://www.vlatkovic.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.vlatkovic.net/PermaLink,guid,255a9be2-18f0-4eb9-b683-eb71287e4614.aspx</pingback:target>
      <dc:creator>Peca Vlatković</dc:creator>
      <wfw:comment>http://www.vlatkovic.net/CommentView,guid,255a9be2-18f0-4eb9-b683-eb71287e4614.aspx</wfw:comment>
      <wfw:commentRss>http://www.vlatkovic.net/SyndicationService.asmx/GetEntryCommentsRss?guid=255a9be2-18f0-4eb9-b683-eb71287e4614</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="margin-bottom: 0cm;">
Ljudi obožavaju da trpaje sve živo u web.config (uopšte u .config fajlove). To je
u principu ok ali ako naletite na projekat u kome ima preko stotinu raznih vrednosti
koje treba podesiti da bi radilo onda 'oće i muka da pripadne. E sad, od količine
ne može da se pobegne ali ako se ta količina organizuje i sistematizuje onda podešavanje
web.cofig-a i ne mora da bude tako mučna operacija. Ovo je moj skromni predlog kako
da se reši problem.
</p>
        <p style="margin-bottom: 0cm;">
Konfiguracioni fajlovi u .Net (web.config, app.config) podržavaju simpatičnu stvar
koja se zove &lt;configSections&gt;. Unutar ovih tagova možete proizvoljno da definišete
&lt;sectionGroups&gt; i &lt;section&gt; tagove. Ovo znači da možete da kreirate bilo
kakvu logičku strukturu podataka i svom .config fajlu. Pretpostavimo da radimo WEB
projekat koji u solution-u sadrži DAL (data access layer) projekat zadužen da komunicira
sa bazom i tumba podatke i BLL (business logic layer) koji sadrži neku poslovnu logiku
između DAL i WEB projekta.
</p>
        <p style="margin-bottom: 0cm;">
          <img alt="solExpl.gif" src="http://www.vlatkovic.net/content/binary/solExpl.gif" border="0" height="454" width="252" />
          <br />
          <br />
Svaki od ovih projekata može potencijalno da vuče vrednosti iz konfiguracionog fajla.
Na primer, očigledno je da DAL projektu (onaj što se igra sa bazom) treba string koji
mu govori gde je baza podataka i koju bazu gađa. Ili, projektu BLL onaj koji sadrži
neku logiku treba podatak sa kog web servisa recimo da vuče neke podatke. Da te tražene
vrednosti ne stoje samo kao lista poželjno je da napravimo strukturu koja će odražavati
našu logičku organizaciju. I evo primera kako može da izgleda:
</p>
        <p style="margin-bottom: 0cm;">
          <br />
        </p>
        <p style="margin-bottom: 0cm;">
Ovako počinje web.config
</p>
        <p>
          <span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;">&lt;configSections&gt;<br />
        &lt;sectionGroup name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"VlatkovicNET.TestApp"</span>&gt;<br />
            &lt;!-- Common
--&gt;<br />
            &lt;section
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"CommonApp"</span> type=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"System.Configuration.NameValueSectionHandler"</span>/&gt;<br />
            &lt;!-- Util
--&gt;<br />
            &lt;section
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"Util"</span> type=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"System.Configuration.NameValueSectionHandler"</span>/&gt;<br />
            &lt;sectionGroup
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"DAL"</span>&gt;<br />
                &lt;section
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"ConnectionStrings"</span> type=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"System.Configuration.NameValueSectionHandler"</span>/&gt;<br />
                &lt;section
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"StoragePaths"</span> type=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"System.Configuration.NameValueSectionHandler"</span>/&gt;<br />
                &lt;section
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"XMLStorage"</span> type=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"System.Configuration.NameValueSectionHandler"</span>/&gt;<br />
            &lt;/sectionGroup&gt;<br />
            &lt;sectionGroup
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"BLL"</span>&gt;<br />
                &lt;section
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"WebServices"</span> type=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"System.Configuration.NameValueSectionHandler"</span>/&gt;<br />
                &lt;section
name=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"CacheServers"</span> type=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"System.Configuration.NameValueSectionHandler"</span>/&gt;<br />
            &lt;/sectionGroup&gt;<br />
        &lt;/sectionGroup&gt;<br />
    &lt;/configSections&gt;</span>
        </p>
        <p style="margin-bottom: 0cm;">
Šta ovde imamo? Prvi blok “definicija sekcija početak” odnosi se na kreiranje strukture
podataka koja će se upisati u .config fajl. Poželjno je da struktura konfiguracije
prati strukturu aplikacije. &lt;configSections&gt; definiše grupu koja nosi ime sastavljeno
od imena Namespace-a i imena projekta “VlatkovicNET.TestApp” koja u sebi pak definiše
grupe koje će da sadrže podešavanja karakteristična za BLL i DAL projekte. Type=”System.Configuration.NameValueSectionHandler”
unutar definicije sekcija govori koji handler će da obrađuje našu strukturu parova.
U ovom slučaju to je .NET handler NameValueSectionHandler . Možete da pišete i svoj
ali to nije predmet ovog teksta. I još jedna napomena, struktura ovde nema nikakve
veze sa funkcionalnošću već samo sa organizacijom i preglednošću.
</p>
        <p style="margin-bottom: 0cm;">
Sledeći blok su same definicije vrednosti za prethodno definisanu strukturu. Na primer:
</p>
        <p>
          <span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;">    &lt;VlatkovicNET.TestApp&gt;<br />
        &lt;CommonApp&gt;<br />
            &lt;add key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"CompanyName"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"VlatkovicNET"</span>&gt;&lt;/add&gt;<br />
            &lt;add key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"ContactEmail"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"pera@test.com"</span>&gt;&lt;/add&gt;<br />
            &lt;add key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"SmtpServer"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"127.0.0.1"</span>&gt;&lt;/add&gt;<br />
        &lt;/CommonApp&gt;<br />
        &lt;Util&gt;<br />
            &lt;add key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"HelpUrl"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"http://www.helpme.com"</span>&gt;&lt;/add&gt;<br />
            &lt;add key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"Language"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"en"</span>&gt;&lt;/add&gt;<br />
        &lt;/Util&gt;<br />
        &lt;DAL&gt;<br />
            &lt;ConnectionStrings&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"MSSql"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"MySql"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"Oracle"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;<br />
            &lt;/ConnectionStrings&gt;<br />
            &lt;StoragePaths&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"Images"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"Docs"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;<br />
            &lt;/StoragePaths&gt;<br />
            &lt;XMLStorage&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"path1"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"path2"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"path3"</span>    value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;                         
<br />
            &lt;/XMLStorage&gt;<br />
        &lt;/DAL&gt;<br />
        &lt;BLL&gt;<br />
            &lt;WebServices&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"service1"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"http://server1/service1.asmx"</span> &gt;&lt;/add&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"service2"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"http://server1/service2.asmx"</span>&gt;&lt;/add&gt;<br />
            &lt;/WebServices&gt;<br />
            &lt;CacheServers&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"server1"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"cacheServer1"</span> &gt;&lt;/add&gt;<br />
                &lt;add
key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"server2"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"cacheServer2"</span>&gt;&lt;/add&gt;<br />
            &lt;/CacheServers&gt;<br />
        &lt;/BLL&gt;<br />
    &lt;/VlatkovicNET.TestApp&gt;</span>
        </p>
        <p style="margin-bottom: 0cm;" lang="en-US">
Primer:
</p>
        <p>
          <span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;">&lt;VlatkovicNET.TestApp&gt;<br />
   &lt;DAL&gt;<br />
      &lt;ConnectionStrings&gt;<br />
         &lt;add key=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"MSSql"</span> value=<span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);">"..."</span>&gt;&lt;/add&gt;</span>
          <br />
        </p>
        <p style="margin-bottom: 0cm;">
unutar projekta DAL koji pripada namespace-u VlatkovicNET.TestApp definišemo grupu
ConnectionStrings koja sadrži vrednost za MSSql connection string.
</p>
        <p style="margin-bottom: 0cm;">
          <br />
        </p>
        <p style="margin-bottom: 0cm;">
Sada ostaje da samo pročitamo ove vrednosti iz .config fajla. Jednostavno, pošto je
.config xml file dovoljno je da definišemo XPath izraz do svakog ključa (key) a njegova
vrednost je value iz NameValue para koga ćemo da čitamo. Ako niste bliski sa XPath-om
nedajte da vas to obeshrabri, bar u ovom slučaju on je jako jednostavan a i nije loše
da se nešto novo nauči (brrr ne sviđa mi se ova rečenica, učite ono što volite). So,
evo ga primer:
</p>
        <p style="margin-bottom: 0cm;">
          <br />
        </p>
        <p style="margin-bottom: 0cm;">
Prvo definišemo metode za dobijanje vrednosti:
</p>
        <p>
          <span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;">    <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">public</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">class</span> ConfigurationManager<br />
    {<br />
        <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">private</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">static</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">object</span> lock_GetIntFromConfig <span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">new</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">object</span>();<br /><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;summary&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
Gets the int from config.</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;/summary&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="path2Key"&gt;The path to key.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="key"&gt;The key.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="defaultValue"&gt;The default value.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;returns&gt;&lt;/returns&gt;</span><br />
        <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">public</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">static</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">int</span> GetIntFromConfig(<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> path2Key, <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> key, <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">int</span> defaultValue)<br />
        {<br />
            <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">lock</span> (lock_GetIntFromConfig)<br />
            {<br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> val <span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span> GetValueFromConfig(path2Key,
key);<br /><br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">if</span> (val
!<span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">null</span>)<br />
                    <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">int</span>.TryParse(val, <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">out</span> defaultValue);<br /><br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">return</span> defaultValue;<br />
            }<br />
        }<br /><br /><br />
        <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">private</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">static</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">object</span> lock_GetDecimalFromConfig <span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">new</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">object</span>();<br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;summary&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
Gets the decimal from config.</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;/summary&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="path2Key"&gt;The path to key.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="key"&gt;The key.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="defaultValue"&gt;The default value.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;returns&gt;&lt;/returns&gt;</span><br />
        <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">public</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">static</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">decimal</span> GetDecimalFromConfig(<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> path2Key, <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> key, <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">decimal</span> defaultValue)<br />
        {<br />
            <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">lock</span> (lock_GetDecimalFromConfig)<br />
            {<br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> val <span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span> GetValueFromConfig(path2Key,
key);<br /><br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">if</span> (val
!<span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">null</span>)<br />
                    <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">decimal</span>.TryParse(val, <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">out</span> defaultValue);<br /><br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">return</span> defaultValue;<br />
            }<br />
        }<br /><br /><br /><br />
        <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">private</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">static</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">object</span> lock_GetValueFromConfig <span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">new</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">object</span>();<br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;summary&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
Gets the value from config.</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;/summary&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="path2Key"&gt;The path to key.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;param name="key"&gt;The key.&lt;/param&gt;</span><br />
        <span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;">///
&lt;returns&gt;&lt;/returns&gt;</span><br />
        <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">public</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">static</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> GetValueFromConfig(<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> path2Key, <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">string</span> key)<br />
        {<br />
            <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">lock</span> (lock_GetValueFromConfig)<br />
            {<br />
                NameValueCollection
nvc <span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span> (NameValueCollection)ConfigurationSettings.GetConfig(path2Key);<br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">if</span> (nvc
!<span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">=</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">null</span>)<br />
                    <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">return</span> nvc[key];<br />
                <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">else</span><br />
                    <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">return</span><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">null</span>;<br />
            }<br />
        }<br />
    }</span>
        </p>
        <p style="margin-bottom: 0cm;">
Primer: vraćanje vrednosti specifičnog connection stringa za projekat<br /><font face="Courier New, monospace"><font style="font-size: 8pt;" size="1">GetValueFromConfig("VlatkovicNET.TestApp/DLL/ConnectionStrings",
"MSSql");</font></font></p>
        <p style="margin-bottom: 0cm;" lang="en-US">
Primer: direktno uzimanje int vrednosti iz .config-a<br /><font face="Courier New, monospace"><font style="font-size: 8pt;" size="1">GetIntFromConfig("VlatkovicNET.TestApp/BLL/Timeouts",
"Cache", 5)</font></font></p>
        <p style="margin-bottom: 0cm;" lang="en-US">
Kao što vidite XPath izraz se piše jednostavno, sa znakom “/” odvajate grupe i dodajete
sekciju na kraju. I metodama prosledite XPath i key koji obeležava vrednost.
</p>
        <p style="margin-bottom: 0cm;" lang="en-US">
Metode ispisane ovde možete po želji da stavite u osnovnu klasu za vaše strane i kontrole
ili u neki zaseban framework koji ćete da vučete sa sobom gde god da krenete. <a href="http://www.vlatkovic.net/download/primer.config.zip">Ovde</a> možete
da skinete primer cele aplikacije pa da pogledate. Primer je samo ilustracija, nije
reprezentativan :-) Primer možete da proširujete normalno pa da recimo kreirate malli
generator klase koja opisuje vašu konfiguraciju u .config fajlu. Gledaću da u budućnosti
napišem pravi generator sa code DOM.
</p>
        <p style="margin-bottom: 0cm;">
Za kraj, nadam se da nisam izmislio toplu vodu i udavio vas u njoj :-) I da ne zaboravim,
zahvaljujem se gospodinu <a href="http://www.compilers.net">Dejanu Miličiću</a> na
recenziji i više nego korisnim savetima.<br /></p>
        <p style="margin-bottom: 0cm;">
          <a href="http://www.vlatkovic.net/download/primer.config.zip">Primer code-a</a>
        </p>
        <img width="0" height="0" src="http://www.vlatkovic.net/aggbug.ashx?id=255a9be2-18f0-4eb9-b683-eb71287e4614" />
      </body>
      <title>Kamenolom iliti krševiti .config</title>
      <guid isPermaLink="false">http://www.vlatkovic.net/PermaLink,guid,255a9be2-18f0-4eb9-b683-eb71287e4614.aspx</guid>
      <link>http://www.vlatkovic.net/2007/12/22/Kamenolom+Iliti+Kr%c5%a1eviti+Config.aspx</link>
      <pubDate>Sat, 22 Dec 2007 12:52:10 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
Ljudi obožavaju da trpaje sve živo u web.config (uopšte u .config fajlove). To je
u principu ok ali ako naletite na projekat u kome ima preko stotinu raznih vrednosti
koje treba podesiti da bi radilo onda 'oće i muka da pripadne. E sad, od količine
ne može da se pobegne ali ako se ta količina organizuje i sistematizuje onda podešavanje
web.cofig-a i ne mora da bude tako mučna operacija. Ovo je moj skromni predlog kako
da se reši problem.
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
Konfiguracioni fajlovi u .Net (web.config, app.config) podržavaju simpatičnu stvar
koja se zove &amp;lt;configSections&amp;gt;. Unutar ovih tagova možete proizvoljno da definišete
&amp;lt;sectionGroups&amp;gt; i &amp;lt;section&amp;gt; tagove. Ovo znači da možete da kreirate bilo
kakvu logičku strukturu podataka i svom .config fajlu. Pretpostavimo da radimo WEB
projekat koji u solution-u sadrži DAL (data access layer) projekat zadužen da komunicira
sa bazom i tumba podatke i BLL (business logic layer) koji sadrži neku poslovnu logiku
između DAL i WEB projekta.
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
&lt;img alt="solExpl.gif" src="http://www.vlatkovic.net/content/binary/solExpl.gif" border="0" height="454" width="252"&gt;
&lt;br&gt;
&lt;br&gt;
Svaki od ovih projekata može potencijalno da vuče vrednosti iz konfiguracionog fajla.
Na primer, očigledno je da DAL projektu (onaj što se igra sa bazom) treba string koji
mu govori gde je baza podataka i koju bazu gađa. Ili, projektu BLL onaj koji sadrži
neku logiku treba podatak sa kog web servisa recimo da vuče neke podatke. Da te tražene
vrednosti ne stoje samo kao lista poželjno je da napravimo strukturu koja će odražavati
našu logičku organizaciju. I evo primera kako može da izgleda:
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
Ovako počinje web.config
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;"&gt;&amp;lt;configSections&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sectionGroup name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"VlatkovicNET.TestApp"&lt;/span&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Common
--&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"CommonApp"&lt;/span&gt; type=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"System.Configuration.NameValueSectionHandler"&lt;/span&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Util
--&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"Util"&lt;/span&gt; type=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"System.Configuration.NameValueSectionHandler"&lt;/span&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sectionGroup
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"DAL"&lt;/span&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"ConnectionStrings"&lt;/span&gt; type=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"System.Configuration.NameValueSectionHandler"&lt;/span&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"StoragePaths"&lt;/span&gt; type=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"System.Configuration.NameValueSectionHandler"&lt;/span&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"XMLStorage"&lt;/span&gt; type=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"System.Configuration.NameValueSectionHandler"&lt;/span&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/sectionGroup&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sectionGroup
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"BLL"&lt;/span&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"WebServices"&lt;/span&gt; type=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"System.Configuration.NameValueSectionHandler"&lt;/span&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section
name=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"CacheServers"&lt;/span&gt; type=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"System.Configuration.NameValueSectionHandler"&lt;/span&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/sectionGroup&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/sectionGroup&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/configSections&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
Šta ovde imamo? Prvi blok “definicija sekcija početak” odnosi se na kreiranje strukture
podataka koja će se upisati u .config fajl. Poželjno je da struktura konfiguracije
prati strukturu aplikacije. &amp;lt;configSections&amp;gt; definiše grupu koja nosi ime sastavljeno
od imena Namespace-a i imena projekta “VlatkovicNET.TestApp” koja u sebi pak definiše
grupe koje će da sadrže podešavanja karakteristična za BLL i DAL projekte. Type=”System.Configuration.NameValueSectionHandler”
unutar definicije sekcija govori koji handler će da obrađuje našu strukturu parova.
U ovom slučaju to je .NET handler NameValueSectionHandler . Možete da pišete i svoj
ali to nije predmet ovog teksta. I još jedna napomena, struktura ovde nema nikakve
veze sa funkcionalnošću već samo sa organizacijom i preglednošću.
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
Sledeći blok su same definicije vrednosti za prethodno definisanu strukturu. Na primer:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;VlatkovicNET.TestApp&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;CommonApp&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"CompanyName"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"VlatkovicNET"&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"ContactEmail"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"pera@test.com"&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"SmtpServer"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"127.0.0.1"&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/CommonApp&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Util&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"HelpUrl"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"http://www.helpme.com"&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"Language"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"en"&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Util&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DAL&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ConnectionStrings&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"MSSql"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"MySql"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"Oracle"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ConnectionStrings&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;StoragePaths&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"Images"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"Docs"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/StoragePaths&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;XMLStorage&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"path1"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"path2"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"path3"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/XMLStorage&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/DAL&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;BLL&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;WebServices&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"service1"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"http://server1/service1.asmx"&lt;/span&gt; &amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"service2"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"http://server1/service2.asmx"&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/WebServices&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;CacheServers&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"server1"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"cacheServer1"&lt;/span&gt; &amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add
key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"server2"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"cacheServer2"&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/CacheServers&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/BLL&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/VlatkovicNET.TestApp&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;" lang="en-US"&gt;
Primer:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;"&gt;&amp;lt;VlatkovicNET.TestApp&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DAL&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ConnectionStrings&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"MSSql"&lt;/span&gt; value=&lt;span style="font-size: 11px; color: rgb(102, 102, 102); font-family: Courier New; background-color: rgb(228, 228, 228);"&gt;"..."&lt;/span&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
unutar projekta DAL koji pripada namespace-u VlatkovicNET.TestApp definišemo grupu
ConnectionStrings koja sadrži vrednost za MSSql connection string.
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
Sada ostaje da samo pročitamo ove vrednosti iz .config fajla. Jednostavno, pošto je
.config xml file dovoljno je da definišemo XPath izraz do svakog ključa (key) a njegova
vrednost je value iz NameValue para koga ćemo da čitamo. Ako niste bliski sa XPath-om
nedajte da vas to obeshrabri, bar u ovom slučaju on je jako jednostavan a i nije loše
da se nešto novo nauči (brrr ne sviđa mi se ova rečenica, učite ono što volite). So,
evo ga primer:
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p style="margin-bottom: 0cm;"&gt;
Prvo definišemo metode za dobijanje vrednosti:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;public&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;class&lt;/span&gt; ConfigurationManager&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;private&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;static&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;object&lt;/span&gt; lock_GetIntFromConfig &lt;span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;"&gt;=&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;new&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;object&lt;/span&gt;();&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;"&gt;///
Gets the int from config.&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;"&gt;///
&amp;lt;param name="path2Key"&amp;gt;The path to key.&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;"&gt;///
&amp;lt;param name="key"&amp;gt;The key.&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;"&gt;///
&amp;lt;param name="defaultValue"&amp;gt;The default value.&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: green; font-family: Courier New; background-color: transparent;"&gt;///
&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;public&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;static&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;int&lt;/span&gt; GetIntFromConfig(&lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;string&lt;/span&gt; path2Key, &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;string&lt;/span&gt; key, &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;int&lt;/span&gt; defaultVa