textbox in pošiljanje podatkov v funkcijo

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);

 

 

Avtor: bobi, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

bojanv
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
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
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...