Delam seminarsko kjer mi na stran izpiše vse strani ki jih ima določen uporabnik. zanima me kako naj zdaj naredim on click metodo za zapis komentarjev?
TextBox text = new System.Web.UI.WebControls.TextBox(); //vnos komentarja v textbox
text.ID = "TextBox" + i;
text.Text = "komentar...";
PlaceHolder1.Controls.Add(text);
Button knof = new Button();
knof.ID="Knof"+i;
knof.Text="Vnesi";
string komentar=text.Text;
PlaceHolder1.Controls.Add(knof);
bojanv - sreda, 07. februar 2007
To ne bo šlo, ker moraš dati pravilno obliko metode. Delegat je kot nekakšen "podpisnik" za evente. Določa obliko dogodka ( kakšna mora biti metoda, kaj se prenaša, kaj se ne,... ) Torej, metoda mora vsebovati {object,EventArgs}. Maš več možnosti izvedbe. Najboljše, da narediš naslednje...narediš si en svoj event, ki se ti bo sprožil, ko se bo sprožil dogodek Click. Recimo primer:protected void DodajKomentar(object sender, EventArgs e) { if (CommentAdding != null) { CommentAdding(sender, new CommentEventArgs(text)); }} private string text; //poljubna zadeva za shranjevanje text-a ... lahko tudi z FindControl greš direktno do TextBox-a pa vrednost pobereš ven....ampak mislim, da ti je to jasno.... public delegate void CommentAddingHandler(object sender, CommentEventArgs e); public event CommentAddingHandler CommentAdding;Eden izmed njih je, da si nardiš kontrolo, ki ji določiš dodaten parameter (v tvojem primeru Komentar) in event, ki se sproži ob kliku (deduješ od Button razreda) in dodaš te funkcionalnosti. Primer: public class TestButton : Button{ public TestButton() { Click += new EventHandler(TestButton_Click); } void TestButton_Click(object sender, EventArgs e) { if (CommentClick != null) { CommentClick(sender, new CommentEventArgs(Comment)); } } public string Comment { get { return ViewState["comment" + this.UniqueID] == null ? string.Empty : ViewState["comment" + this.UniqueID].ToString(); } set { ViewState["comment" + this.UniqueID] = value; } } public delegate void CommentClickHandler(object sender, CommentEventArgs e); public event CommentClickHandler CommentClick;}public class CommentEventArgs : EventArgs{ public readonly string Text; public CommentEventArgs() : this("") { } public CommentEventArgs(string text) { Text = text; }}Obstaja veliko različic...naredi tisto, ki ti ustreza....
bobi - torek, 06. februar 2007
Prav si me razumel. Zdaj sem naredil takole: dodal sem: knof.Click += new EventHandler(Dodaj_komentar(komentar)); ... public void Dodaj_komentar(object sender, EventArgs e, string komentar) {...} vrže pa mi error: Error 1 No overload for method 'Dodaj_komentar' takes '1' arguments E:\...\uporabniki\moje_strani.aspx.cs 189 44 E:\...\seminarska\ Kako naj pošljem komentar v funkcijo Dodaj_komentar?
bojanv - torek, 06. februar 2007
Če te prav razumem, moraš povezat event na OnClick delegate-a....Torej, knof.Click += new EventHandler(metoda);protected void Metoda(object sender, EventArgs e){//kar pac bos nardil...magari zapisal na stran ali pa na page....}Ali sem te narobe razumel...