[ finderetf @ 31.05.2009. 15:19 ] @
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???

[ finderetf @ 05.06.2009. 15:29 ] @
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???
[ mmix @ 05.06.2009. 15:31 ] @
ako ti je dodavanje kontrole u "if (!Page.IsPostBack)" izbaci ga van tog if-a.
[ finderetf @ 05.06.2009. 16:18 ] @
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???
[ zumzum86 @ 01.07.2009. 23:22 ] @
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.