Novo

Forum kao aplikacija na telefonu

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

  • 4 odgovora
  • 3.205 pregleda

Najnovija ↓

Kako da "planirano" pozovem page_load(); ? 31.05.2009. u 16:19 · pre 212 meseci #1
Imam stranicu, i u njoj PlaceHolder. Tom PlaceHolderu dodajem svoju UserControl na kojoj se nalazi dugme(dinamicki naravno).

Klikom na dugme UserKontrola izmedju ostalih poziva se Page_Load(), u kojoj ja ponovo dodam PlaceHolderu tu moju UserControl kako bi se registrovao klik na dugme. Kada mi se obradi ovaj dogadjaj, potrebno mi je ponovno zvanej Page_Load();

Kako to da izvedem???

Re: Kako da "planirano" pozovem page_load(); ? 05.06.2009. u 16:29 · pre 211 meseci #2
Ajde da malo uprostim pitanje:

U korisnickoj kontroli imam TextBox i Button. Klikom na dugme Text iz TextBoxa ide u bazu. Ali posto je ovo UserControl moram ponovo da je dodam u Page_Load(), jer mi dugme iz UserControl to izaziva. Ali, prilikom ponovnog ucitavanja TextBox mi ostaje prazan.

Kako da upamtim sadrzinu TextBoxa???
Re: Kako da "planirano" pozovem page_load(); ? 05.06.2009. u 16:31 · pre 211 meseci #3
ako ti je dodavanje kontrole u "if (!Page.IsPostBack)" izbaci ga van tog if-a.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Kako da "planirano" pozovem page_load(); ? 05.06.2009. u 17:18 · pre 211 meseci #4
Ne mogu, jer u zavisnosti od odabira korisnika zavisi da li cu ja ucitati
ili ne tu kontrolu. Znaci mora da mi bude u if(!Page.IsPostBack), imam i
problem da ponekad moram dva puta da kliknem da dugme da bi se Event
registrovao???
Re: Kako da "planirano" pozovem page_load(); ? 02.07.2009. u 00:22 · pre 211 meseci #5
Prije svega jedna mala digresija (izvini sto ovo spominjem): Button ne zove Page_Load() nego je taj poziv u sklopu page lifecycle-a, ali ne bitno.
Ako radis upis u bazu iz kontrole direktno, nije mi jasno zasto , ali dobro.
Ovo trebao implementirati preko delegata (propagiranjem eventa).

Scenario:
Recimo da na napravis WebUserControl-u koja ima textbox i dugme.
Tu kontrolu dodas na neku stranicu koja ima jedan textbox.

Zahtjev: da se na klik dugmeta unutar WebUserControl-e vrijednost iz textbox-a u WebUserControl-i prekopira u textbox na stranici kojoj si dodao ovu kontrolu.

CODE:

----------------------------
WebUserControl

- ASP .NET:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="TestDataList.WebUserControl1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="SClickHandler"
Text="Button" />

- CODE BEHIND:

public partial class WebUserControl1 : System.Web.UI.UserControl
{
public delegate void ButtonClickHandler(object sender, EventArgs e);//definises delegata cijeg ce tipa biti event
public event ButtonClickHandler buttonClick;//definises event koji ces podici
public TextBox txb;//ovaj objekat TextBox koristim da bi mogao da pristup ovom textboxu izvan kontrole

protected void Page_Load(object sender, EventArgs e)
{
txb = this.TextBox1;//ovim omogucavas pristup textboxu izvan kontrole
}

protected void SClickHandler(object sender, EventArgs e)
{

this.buttonClick(sender, e);//propagiranje event-a do stranice na koju si importovao ovu kontrolu
//DIO TVOG KODA - UPIS U BAZU (Ako to radis direktno iz ove kontrole)
}


}
-------------------------

Default.aspx - strinica u koju si ucitao kontrolu

- ASP .NET:

<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
- CODE BEHIND:


public partial class _Default : System.Web.UI.Page
{
protected void Page_Init()
{

}
public WebUserControl1 webCont;
protected void Page_Load(object sender, EventArgs e)
{

webCont = (WebUserControl1)Page.LoadControl("WebUserControl1.ascx");//load-ujes kontrolu i smjestas je u webCont objekat da bi imao pristup njegovim atributima
webCont.buttonClick += new TestDataList.WebUserControl1.ButtonClickHandler(this.ControlButtonClickHandler);//assign-as event handler za event button click koji smo napravili u WebUserControl1 klasi
this.form1.Controls.Add(webCont);// dodajes kontrolu u formu

}

protected void ControlButtonClickHandler(object sender, EventArgs e)
{

TextBox1.Text = webCont.txb.Text; //ovdje se string iz textboxa unutar kontrole kopira u string textboxa unutar default stranice - sto bi trebao biti odgovor na tvoje pitanje
//TVOJ KOD OBRADE klika - (recimo UPIS u BAzu)
}
}


U ovom slucaju vrijednost iz textbox-a ostane bez cuvanja i ponovnog setovanja, bar kod mene :) - PROVJERENO.

Ako dodavanje stavis u if(!IsPostBack) nece uopste dodati kontrola, jer svaki klik na button radi postback, a to rezultuje da nece proci ovaj uslov!
Nadam se da je bilo od pomoci.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme