Novo

Forum kao aplikacija na telefonu

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

  • 5 odgovora
  • 4.373 pregleda

Najnovija ↓

ASP.NET Runtime event handler 02.01.2007. u 11:03 · pre 241 mesec #1
Srećna Nova godina svima.

Imam jedan veeeliki problem i prosto ne verujem da do sada nisam naišao na njega. Kada dodam kontrolu i event handler za nju u Page Load-u sve je ok, međutim kada mi je potrebno da se kontrole prave po izboru korisnika handler jednostavno ne radi. Na par foruma sam pročitao da je se događaji ne mogu registrovati nakon Page Load-a. Da li je tu kraj price? :)
Evo mali kod ko hoce da proba.

Code:

<%@ Page Language="C#" %>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        LinkButton runtimeLK = new LinkButton();
        runtimeLK.Text = "Load";
        runtimeLK.Click += new EventHandler(runtimeLK_Click);
        this.runtime.Controls.Add(runtimeLK);
    }
    protected void LK_Click(object sender, EventArgs e)
    {
        LinkButton runtimeLK = new LinkButton();
        runtimeLK.Text = "Click";
        runtimeLK.Click += new EventHandler(runtimeLK_Click);
        this.runtime.Controls.Add(runtimeLK);
    }
    void runtimeLK_Click(object sender, EventArgs e)
    {
        this.txtMsg.Text = ((LinkButton)sender).Text;
    }
</script>

<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <form id="Test" runat="server">
            <div>
                <asp:LinkButton ID="LK" runat="server" OnClick="LK_Click" Text="Add" />
                <div ID="runtime" runat="server" />
                <asp:TextBox ID="txtMsg" runat="server" />
            </div>
        </form>
    </body>
</html>
Re: ASP.NET Runtime event handler 03.01.2007. u 17:28 · pre 241 mesec #3
Izvini možda se nisam dobro izrazio. Ja sam u ovom kodu napravio linkbutton na čiji klik treba dodati kotrolu i handler. Dakle baš mi je tako nešto potrebno: kada korisnik klikne na link, dodaj različite kotrole i hvataj njihove događaje.
Re: ASP.NET Runtime event handler 03.01.2007. u 17:50 · pre 241 mesec #4
Kako verovatno na jedan klik dodaješ uvek iste kontrole, zašto ne uradiš sledeće:

- staviš SVE kontrole i sve hendlere na stranu
- grupišeš one koje se "pojave" u okviru panela
- u startu sakriješ taj panel ( .Visible = false)
- na klik ga otkriješ

?

Time ćeš izbeći sve probleme sa dinamičkim dodavanjem kontrola i hendlera.
Potpis
http://www.vesic.org | Blog: http://www.vesic.org/blog | Programming:
http://www.vesic.org/english/blog
Re: ASP.NET Runtime event handler 04.01.2007. u 00:08 · pre 241 mesec #5
Citat:
ads: Dakle baš mi je tako nešto potrebno: kada korisnik klikne na link, dodaj različite kotrole i hvataj njihove događaje.

Dejan ti je lepo odgovorio da se to što hoćeš (mada nisi tačno rekao šta ustvari hoćeš da postigneš, tj. koju funkcionalnost hoćeš da omogućiš korisniku) radi drugačije.

Ja da probam da objasnim zašto ne radi onako kako si zamislio.

Nije problem da napraviš kontrolu u event handleru, ni da joj postaviš event handler. Problem je što taj event handler treba da bude postavljen i u postbacku, tj. kad korisnik klikne na tu dinamički kreiranu kontrolu. Da bi on bio postavljen, tu kontrolu treba da kreiraš i u postbacku: kad u ASP.NETu kreiraš kontrolu dinamički, ona postoji samo u tom ciklusu, da bi postojala i u sledećem postbacku moraš opet da je kreiraš. Mislim da možeš i u page.onload eventu ali treba probati.

Svakako ti je mnogo lakše da radiš kao što je Dejan rekao. Treba napomenuti da se, kada se postavi Visible property kontrole na false, ta kontrola uopšte i ne renderuje, tj. situacija nikako nije ekvivalenta onoj kad u HTML-u postavite display:none.
Re: ASP.NET Runtime event handler 04.01.2007. u 03:08 · pre 241 mesec
izmenjeno 1 put, poslednji put Shevchenko 04.01.2007. u 03:27
  1. Shevchenko04.01.2007. u 03:27zapis iz teksta poruke
#6
Citat:
Dejan Vesic: Kako verovatno na jedan klik dodaješ uvek iste kontrole, zašto ne uradiš sledeće:

- staviš SVE kontrole i sve hendlere na stranu
- grupišeš one koje se "pojave" u okviru panela
- u startu sakriješ taj panel ( .Visible = false)
- na klik ga otkriješ

?

Time ćeš izbeći sve probleme sa dinamičkim dodavanjem kontrola i hendlera.

Definitivno najjednostavniji i najbolji nacin! :)
Potpis
Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme