Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 17 odgovora
  • 4.354 pregleda

Najnovija ↓

Kako ovo u ASP.net -u 12.01.2008. u 19:00 · pre 228 meseci #1
Imam jedan problem.

Nikad nisam radio sa ASP -om ili ASP.Net -om.

Eto to je moj glavni problem. Molim vas, kolege koje znaju ASP, da mi pomognete. U pocetku su stvari delovale sasvim osnovno i jednostavno...:

Imam web site nastao iz VS2005 koji ima klasu _Default, koja ima najobicniji dogadjaj:

protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
TextBox1.Text = "String";
}

}
catch (Exception ex)
{

}
}

... Stvari su se iskomplikovale kada sam hteo da iz metode koju pozivam na nekom desetom mestu uradim promenu vrednosti gore pomenutog TextBox1...:

public void Update()
{
TextBox1.Text = "Novi string";
}

... i da mi se po izvrsenju ove metode TextBox1.Text automatski promeni.

Drage kolege kako ovo da ostvarim? Pomagajte.
Potpis
burito ... burito
Re: Kako ovo u ASP.net -u 12.01.2008. u 20:05 · pre 228 meseci #2
Pa, zavisi gde je to "neko deseto mesto", ali ako se nalazi van te strane, onda je TextBox1 nedostupan. To mozes resiti tako sto tom Update() metodu prosledis textbox odande odakle pozivas (pod uslovom da pozivas sa strane na kojoj je taj TextBox1, inace moras od metoda do metoda da bi stigao do Update):
Code:

public void Update(TextBox tBox)
{
tBox.Text = "Novi string";
}
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kako ovo u ASP.net -u 12.01.2008. u 21:37 · pre 228 meseci #3
Sad vidim da sam se pogresno izrazio i izvinjavam se.

Dakle pri izvrsavanju Update() metode treba da se ponovi kod koji se izvrsava na Page_Load dogadjaju (moj problem je sto ne mogu da pronadjem nesto tipa RefreshPage() sto bi mi resilo sve probleme)

Dakle "Novi string" u metodi Update() nije novi string, vec podatak koji se cita iz baze, ali je u medjuvremenu promenjen na desetom mestu ...
Potpis
burito ... burito
Re: Kako ovo u ASP.net -u 12.01.2008. u 22:05 · pre 228 meseci #4
Ako sam te dobro razumeo onda mozes da izdvojis telo metoda Page_load u npr.
Code:

private void Instanciranje()
{
try
{
if (!Page.IsPostBack)
{
TextBox1.Text = "String";
}

}
catch (Exception ex)
{

}

}


i na page_load event pozoves taj metod, ako ti je ponovo potrebna ta vrednost mozes pozvati taj metod bilo kada... a ako ti je potrebno da cuvas vrednos nekih promenljivih tokom rada web aplikacije mozes da ih cuvas u promenljivama sesije ili viewstate ili kukijima (posto obicne promenljive "izgube" svoju vrednost tokom razlicitih zahteva za stranicama ako ne koristis promenljive sesije ili viewstate... bilo je nedavno ovde na forumu o tome, koristi pretragu.
Potpis
RTFM
Re: Kako ovo u ASP.net -u 12.01.2008. u 22:49 · pre 228 meseci #5
@aleksandarpopov: hvala na pokusaju, ali cini mi se da me nisi dobro razumeo.

Vrednost je u bazi. Iz iste se cita preko metode klase koja postoji i nije relevantna (to je moja standardna klasa za dobavljanje podataka iz baze i koristim je za win aplikacije.). Vazno je samo da taj metod postoji i zvacemo ga Fetch().

Kada startujem stranicu, dakle invokujem dogadjaj Page_Load, pozivam Fetch() i ono sto mi se vrati iz baze upisem u TextBox1.

OK. Metoda Update() samo treba da refreshuje stranicu tako da mi se opet izvrsi ista stvar... dakle kada pozovem Update() ja u stvari zelim samo da osvezim prikaz. Sa strane web aplikacije nista se nije promenilo. Znaci kada uradim refresh u browseru
[bez ...if(!Page.IsPostBack)...] ja dobijem zeljeni rezultat.

Kako da dobijem zeljeni rezultat a da ne pritisnem refresh? jel ima neko resenje?
Potpis
burito ... burito
Re: Kako ovo u ASP.net -u 12.01.2008. u 23:31 · pre 228 meseci #6
Jbg.. ja te i dalje ne razumem :)
Ako hoces da ti se izvrsi nesto svaki put, ne samo ako je stranica prvi put zahtevana (tj. ako nije post back) NE moze u okviru ono ga if-a sa post back. Ne razumem bas sta ti je problem ...
Potpis
RTFM
Re: Kako ovo u ASP.net -u 13.01.2008. u 00:20 · pre 228 meseci #7
OK. kako iz metode web klase mogu da refreshujem stranicu?
Potpis
burito ... burito
Re: Kako ovo u ASP.net -u 13.01.2008. u 01:31 · pre 228 meseci #8
Ne mozes, jer se osvezavanje poziva od strane klijenta, ne servera. Mozes da probas nesto kao Response.Redirect(uri). Bilo bi bolje da objasnis sta pokusavas da uradis, jer je pravljenje WinForms i ASP.Net aplikacija po konceptu maltene dijametralno suprotno.
Re: Kako ovo u ASP.net -u 13.01.2008. u 02:32 · pre 228 meseci #9

pokusavam da uradim nesto ovog tipa:

Code:


public partial class _Default : System.Web.UI.Page, IObserver
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {             
                Struct s = new Struct();
                s.data = FetchSomeData();
                TextBox1.Text = s.data;
         }
         catch (Exception ex)
         {

         }
   }

   ///
   ///Promena se desila na bazi van ovog sistema. Ali zahvaljujuci IObserver interfejsu ova metoda ce se pozvati.
   ///
   public void Update()
   {
        //TODO: Ubaciti logiku kojom se osvezava ova stranica i time automatski notifikovati klijenta o promeni podatka. 
   }

}


Znaci idealno bi bilo kada bi moglo:

Code:

   public void Update()
   {
        Page.Refresh();
   }


Po predjasnjem postu kapiram da to nije bas tako moguce kako sam ja zamislio a sada vidim i zasto... ali kako?

Kad si rekao klijent-server na pamet mi pade javascript (u kome se moze izvrsiti refresh)... hm... ali kako to ubaciti da se poziva iz metode i to za ovu stranicu? (ovo poslednje je samo ideja koju mozda treba razraditi. Ja ipak ne znam nista o ASP-u, web servisima i svemu tome sto pocinje na w :( ).
Potpis
burito ... burito
Re: Kako ovo u ASP.net -u 13.01.2008. u 03:19 · pre 228 meseci #10
Pa malo ti je prevelik prvi zalogaj ASP.Neta ;) To sto si zamislio (da se promene baze na serveru osvezavaju na klijentu) moguce je da preko da postavis metadata refresh na stranici i da se klijent automatski osvezava u nekom intervalu.
Ja ne znam kako bi se Observer pattern koristio nad ASP.Net aplikacijom, mozda preko AJAXa, ali pokusaj recima da objasnis sta pokusavas da uradis.
Re: Kako ovo u ASP.net -u 13.01.2008. u 10:37 · pre 228 meseci #11
Pazi, tebi se taj Update() kao i svaki drugi metod pozivaju prilikom ucitavanja strane, osim u slucajevima da je to pozvano prilikom ucitavanaj neke druge ili je spojeno sa nekim drugim procesima. E sad, ako nije neki od ovih posebnih slucajeva, onda lepo to sto ti je u Page_Load stavi u treci metod koji ces pozivati bilo iz page_load, bilo iz Update().
Ako jeste neki od ovih posebnih slucajeva (znaci, dolazi do nekih promena nakon sto je stranica vec poslata klijentu), e onda jedino preko ajax-a, sto zaista jeste komplikovanija stvar ako se tek sreces sa asp.net-om.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kako ovo u ASP.net -u 13.01.2008. u 12:18 · pre 228 meseci #12
Jedino sto mi pada na pamet je AJAX i jedan tajmer koji bi svakih 5 sekundi provjeravao promjene u bazi. Ili mozda mali js kod koji ce refresovati str.
Re: Kako ovo u ASP.net -u 13.01.2008. u 13:08 · pre 228 meseci #13
Citat:

Ako jeste neki od ovih posebnih slucajeva (znaci, dolazi do nekih promena nakon sto je stranica vec poslata klijentu), e onda jedino preko ajax-a, sto zaista jeste komplikovanija stvar ako se tek sreces sa asp.net-om.

^
|
Ovo je slucaj.

Potpuno vas razumem ako vas mrzi detaljnija rasprava sa mnom na ovu temuna na bilo kom daljem nivou. Neka korisnik pritisne F5 ...sta da mu radim. (Mada u tom slucaju nece videti validne podatke dok sam ne osvezi stranicu.)

Zahvaljujem svima koji su dali svoj doprinos na ovoj temi.
Potpis
burito ... burito
Re: Kako ovo u ASP.net -u 13.01.2008. u 13:46 · pre 228 meseci #15
ajaalba, nije da necemo da ti detaljisemo, vec je ajax cela jedna oblast. Neko bi mogao da ti mozda uradi taj primer ali ces kod neceg opet zapeti. Mislim, ako neko hoce, nema problema, ja bih, ali ni ja ne znam ajax bas dobro.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kako ovo u ASP.net -u 13.01.2008. u 15:36 · pre 228 meseci #16
Citat:
ajaalba: Potpuno vas razumem ako vas mrzi detaljnija rasprava sa mnom na ovu temuna na bilo kom daljem nivou. Neka korisnik pritisne F5 ...sta da mu radim. (Mada u tom slucaju nece videti validne podatke dok sam ne osvezi stranicu.)


Vec sam rekao da ti je koliko toliko resenje da stavis tag metadata refresh i stranica ce se samo osvezavati u odredjenom intervalu. Nazalost ni meni AJAX nije jaca strana :(
Re: Kako ovo u ASP.net -u 13.01.2008. u 18:21 · pre 228 meseci #17
Evo ukratko, instaliraj ASP AJAX Extension, izaberi AJAX enabled web site(ovo cini mi se u .NET 3.5
nije potrebno) stavi na stranicu Timer, ScriptManager, UpdatePanel i unutar njega kontrole koje zelis da se
osvezavaju. Timer-u podesi vreme i unutar Timer tick event-a implementiraj kako ce se osvezavati.

Za neko detaljisanje valjda ce se javiti neko iskusniji sa ASP.NET-om, ja vise radim na desktop aplikacijama
i vise ih volim :).

Nadam se da ti je pomoglo koliko toliko ili barem uputilo.
Re: Kako ovo u ASP.net -u 13.01.2008. u 20:45 · pre 228 meseci #18
Hvala na savetima.
Zadubicu se u ovu materiju, kada budem imao vise vremena .... sto u mom slucaju znaci za par meseci...

Opet hvala svima na podrsci.
Potpis
burito ... burito
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme