Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dva puta pozvati istu user controlu

[es] :: .NET :: ASP.NET :: Dva puta pozvati istu user controlu

[ Pregleda: 3322 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Belgarion
Novi Sad

Član broj: 245135
Poruke: 71
*.static.sbb.rs.



+2 Profil

icon Dva puta pozvati istu user controlu08.07.2013. u 12:37 - pre 131 meseci
Imam user controlu npr:

Code:

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="div.ascx.vb" Inherits="UserControls_div" %>
<script>

    function Show(showFirst){
        <%--//Radi nesto:--%>
        if (showFirst){
            $("#div1").show();
            $("#div2").hide();
        }
        else{
            $("#div1").hide();
            $("#div2").show();
        }
    }

</script>
<div id="div1">
   11111111
</div>
<div id="div2">
   222222222
</div>



Pozovem user controlu na stranici:

Code:
<uc6:div ID="a1" runat="server" />


I kada pozivam funkciju Show(true) iz user controle onda sve radi.

ALI. Šta ako želim da dva puta koristim user kontrolu?

Code:
<uc6:div ID="a1" runat="server" />
<uc6:div ID="a2" runat="server" />


Kako onda da znam kada pozovem metod Show da li se on odnosi na prvi ili drugi poziv user controle?

Šta ako želim da za prvu user conrolu pozovem funkciju Show(true); a za drugu Show(false);?

Unapred zahvalan na pomoći da ovo shvatim.

[Ovu poruku je menjao Belgarion dana 08.07.2013. u 14:27 GMT+1]
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: Dva puta pozvati istu user controlu08.07.2013. u 14:52 - pre 131 meseci
Ako se preko div1 ili div2 poziva funkcija mozes dodati div koji ce obuhvatiti ova dva, i onda ako neki od div-a pozove Show() funkciju da ides $(this).parent('div').children('#div1') i $(this).parent('div').children('#div2') i dalje radis sta hoces. Ne znam da li mora jos da se doda .first().
 
Odgovor na temu

Belgarion
Novi Sad

Član broj: 245135
Poruke: 71
*.static.sbb.rs.



+2 Profil

icon Re: Dva puta pozvati istu user controlu10.07.2013. u 08:31 - pre 131 meseci
Bojim se da ne razumem.

Šta to znači "Ako se preko div1 ili div2 poziva funkcija" ?

Ovo je trivijalni primer koji ilustruje problem.
Potencijalno može da bude 100 div-ova i još raznih tagova.
Mene zanima suština, kako se to prave user kontrole koje se mogu pozivati više puta na stranici?
Ako želim da mogu da je pozovem i 100 puta i to nezavisno od JQuery-ja.

[Ovu poruku je menjao Belgarion dana 10.07.2013. u 09:57 GMT+1]
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Dva puta pozvati istu user controlu10.07.2013. u 09:13 - pre 131 meseci
Da bi koristio N puta istu kontrolu onda moraš da imaš "nekakav" jedinstveni ID elementu koji obuhvata sadržaj kontrole.
Na primer, možeš da koristiš ClientID same kontrole u tu svrhu.
Evo ti jedan primer na brzaka (najlepše je da se uradi preko jQuery plugin-a, ali ovde ne ulazim u to):

Code:


<div id="<%= ClientID %>_root">
    <div data-id="div1">
       11111111
    </div>
    <div data-id="div2">
       222222222
    </div>
</div>

<script>
    
    // Defiicija funkcije za root div kontrole
    $("#<%= ClientID %>_root")[0].Show = function (showFirst) {
        var div1 = $(this).find("[data-id='div1']");
        var div2 = $(this).find("[data-id='div2']");
        if (showFirst){
            div1.show();
            div2.hide();
        }
        else{
            div1.hide();
            div2.show();
        }
    }

   // Primeri poziva funkcije
   $("#<%= ClientID %>_root")[0].Show(true);
   $("#<%= ClientID %>_root")[0].Show(false);

</script>

 
Odgovor na temu

Belgarion
Novi Sad

Član broj: 245135
Poruke: 71
*.static.sbb.rs.



+2 Profil

icon Re: Dva puta pozvati istu user controlu10.07.2013. u 10:01 - pre 131 meseci
Ok, kapiram otprilike ideju.
Samo što funkcija verovatno treba da se pozove sa ID-em user controle.
Jer ako samo stavim ClientID onda će oba imati isti ID.

ovako nekako:
Code:
   $("#<%= a1.ClientID %>_root")[0].Show(true);
   $("#<%= a2.ClientID %>_root")[0].Show(false);


I još jedno pitanje.
Čemu služi "data-id", zašto ne bih koristio samo id atribut?
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Dva puta pozvati istu user controlu10.07.2013. u 10:20 - pre 131 meseci
data-id atribut sam koristio umesto id atributa da ne bih "pokvario" HTML - po pravilu, ne bi trebao da imaš dva elementa sa istim ID-em.
ClientID kontrole je po defaultu jedinstven, probaj i videćeš da je on tipa "ctl01_ctl07_ctl31_a1".

http://msdn.microsoft.com/en-u...m.web.ui.control.clientid.aspx
 
Odgovor na temu

Belgarion
Novi Sad

Član broj: 245135
Poruke: 71
*.static.sbb.rs.



+2 Profil

icon Re: Dva puta pozvati istu user controlu10.07.2013. u 11:06 - pre 131 meseci
Hvala Dusane.
Sada kontam.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.isp.telekom.rs.



+373 Profil

icon Re: Dva puta pozvati istu user controlu10.07.2013. u 11:28 - pre 131 meseci
Citat:
Belgarion:
Bojim se da ne razumem.

Šta to znači "Ako se preko div1 ili div2 poziva funkcija" ?

[Ovu poruku je menjao Belgarion dana 10.07.2013. u 09:57 GMT+1]


Dusan je objasnio, skripta mora znati da prepozna o kom se tacno elementu radi jer je ona globalna na stranici.

Ako funkciju Show okidaju div1 ili div2 skripta moze koristiti relativnu putanju da nadje kontrolu o kojoj se radi koristeci this koji referencira pokretaca skripte, a preko njega nadje "roditeljski element" i onda odradi sve sto treba na "child" elementima.

Zato sam pitao ko poziva funkciju jer ako van kontrole pozivas Show(), npr ubacis neko dugme koje nije deo tvoje kontrole, onda moras obezbediti funkciji i element na koji mislis ako vec planiras da imas vise takvih user kontrola.
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: Dva puta pozvati istu user controlu

[ Pregleda: 3322 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.