Dynamiczny Button.Click

0

Witam,
Mam na stronie web "Button" po wciśnięciu którego, na panelu umieszczonym w div-ie tworzą się dynamicznie 2 textBox-y i Button:

protected void wyk_dodaj_Click(object sender, EventArgs e)
{
                TextBox t_imie = new TextBox();
                t_imie.Width = 170;
                Panel1.Controls.Add(t_imie);

                TextBox t_nazwisko = new TextBox();
                t_nazwisko.Width = 170;
                Panel1.Controls.Add(t_nazwisko);

                Button wyk_dodaj_u = new Button();
                wyk_dodaj_u.Text = "Dodaj";
                wyk_dodaj_u.Click += new System.EventHandler(funkcja);
                Panel1.Controls.Add(wyk_dodaj_u);
}
public void funkcja(object sender, System.EventArgs e)
{
       //działania funcji
 }

Niestety jedynym rezultatem po wciśnięciu przycisku "wyk_dodaj_u" jest zniknięcie wszystkich stworzonych wcześniej kontrolek, a nie jak się naiwnie spodziewałem wykonanie kodu zawartego w funkcji "funkcja". W jaki sposób zrobić to prawidłowo aby działało. Robiłem według przykładów jakie wygooglowałem ale nic to nie daje :(
Pzdr

0

Witam spróbowałbym tak

 
protected void wyk_dodaj_Click(object sender, EventArgs e)
{
                TextBox t_imie = new TextBox();
                t_imie.Width = 170;
                Panel1.Controls.Add(t_imie);

                TextBox t_nazwisko = new TextBox();
                t_nazwisko.Width = 170;
                Panel1.Controls.Add(t_nazwisko);

                Button wyk_dodaj_u = new Button();
                wyk_dodaj_u.Text = "Dodaj";
                wyk_dodaj_u.Click += ClickHandler;
                Panel1.Controls.Add(wyk_dodaj_u);
}
void clickHandler(object sender, EventArgs e)
        {
            zatwierdz_Click();  
         }

        private void zatwierdz_Click()
        {
          co ma się dziać 
        }
Ale podejrzewam że w clickHandler możesz pisać już co ma się dziać nie jestem expertem ale coś się już w takie rzeczy bawiłęm  
0

leszex - to twoje niestety nie dziala. Sam mam ten problem i nie wiem o co chodzi. W jednym programie ten handler mi sie wykonuje w drugim juz nie ;/ Napisane mam tak jak autor tematu.

0

Dziwne ja u siebie w kodzie mam tak jak napisałęm i działa bez żadnego problemu

0

othello,
po pierwsze robie to z ciekawosci bo dziwie sie ze w jednym przypadku mi dziala a w drugim nie ;/
po drugie probowalem deklaracje globalna i nic nie dalo ;]

leszex,
no to ja juz w ogole nie wiem o co chodzi ;]

0

a gdybyś pierwszą fukcje tutaj protected miał public bo tylko w tym zauważyłem różnice ale szczerze to watpie bo akurat różnica między protected a public chodzi tutaj o klasy pochodne

0

leszek,
probowalem i tez nic ;/

0

Kurcze nie wiem dam ci mój kod który działa może ty coś kukniesz

public void utworz_wlasciwosci_pokojow()
        {
            //Ilosc pokoi -- zczytanie z texboxa nr 2 conwert na inta

            int ilosc_pokoi = Convert.ToInt16(textBox2.Text);
            
            //Tablice texboxow , labeli , radiobuttonow ,
            //-------------------NR POKOJU ---------------------
            TextBox[] textboxy_pokoje = new TextBox[ilosc_pokoi + 1];
            Label[] napisy_pokoje = new Label[ilosc_pokoi + 1];
            //Pozycje od lewej i od gory
            int positionleft = 160; 
            int positiontop = 65;
            //Petla tworzaca Labele texboxy itd w okreslonym polozeniu i dodanie ich do forma nr 3
            for (int i = 1; i <= ilosc_pokoi; i++)
            {

                napisy_pokoje[i] = new Label();
                napisy_pokoje[i].Text = "Pokoj nr ";
                napisy_pokoje[i].Left = positionleft;
                napisy_pokoje[i].Top = positiontop;
                this.Controls.Add(napisy_pokoje[i]);
                positiontop += 23;
                textboxy_pokoje[i] = new TextBox();
                textboxy_pokoje[i].Left = positionleft;
                textboxy_pokoje[i].Top = positiontop;
                positiontop += 23;
                this.Controls.Add(textboxy_pokoje[i]);
            }
            //-----------------ILOOSOBOWE--------------------------
            int positionleft2 = 300;
            int positiontop2 = 65;
            Label[] napisy_iloscmiejsc = new Label[ilosc_pokoi + 1];
            TextBox[] textboxy_iloscmiejsc = new TextBox[ilosc_pokoi + 1];
            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                napisy_iloscmiejsc[i] = new Label();
                napisy_iloscmiejsc[i].Text = "Ilosc osob "; 
                napisy_iloscmiejsc[i].Left = positionleft2;
                napisy_iloscmiejsc[i].Top = positiontop2;
                this.Controls.Add(napisy_iloscmiejsc[i]);
                positiontop2 += 23;
                textboxy_iloscmiejsc[i] = new TextBox();
                textboxy_iloscmiejsc[i].Left = positionleft2;
                textboxy_iloscmiejsc[i].Top = positiontop2;
                positiontop2 += 23;
                this.Controls.Add(textboxy_iloscmiejsc[i]);
            }
            //----------------Lazienka |TAK/NIE----------------------
            int positionleft3 = 420;
            int positiontop3 = 65;
            CheckBox[] checkboxy_lazienka = new CheckBox[ilosc_pokoi + 1];
            Label[] lazienka = new Label[ilosc_pokoi + 1];
            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                lazienka[i] = new Label();
                lazienka[i].Text = "Łazienka ";
                lazienka[i].Left = positionleft3;
                lazienka[i].Top = positiontop3;
                this.Controls.Add(lazienka[i]);
                positiontop3 += 23;
                checkboxy_lazienka[i] = new CheckBox();
                checkboxy_lazienka[i].Left = positionleft3;
                checkboxy_lazienka[i].Top = positiontop3;
                positiontop3 += 23;
                this.Controls.Add(checkboxy_lazienka[i]);
                
            }
            //----------------Kablowka |TAK/NIE----------------------
            int positionleft4 = 530;
            int positiontop4 = 65;
            CheckBox[] checkboxy_kablowka = new CheckBox[ilosc_pokoi + 1];
            Label[] kablowka = new Label[ilosc_pokoi + 1];
            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                kablowka[i] = new Label();
                kablowka[i].Text = "Kablowka ";
                kablowka[i].Left = positionleft4;
                kablowka[i].Top = positiontop4;
                this.Controls.Add(kablowka[i]);
                positiontop4 += 23;
                checkboxy_kablowka[i] = new CheckBox();
                checkboxy_kablowka[i].Left = positionleft4;
                checkboxy_kablowka[i].Top = positiontop4;
                positiontop4 += 23;
                this.Controls.Add(checkboxy_kablowka[i]);
            }
            //----------------Internet |TAK/NIE----------------------
            int positionleft5 = 640;
            int positiontop5 = 65;
            CheckBox[] checkboxy_internet = new CheckBox[ilosc_pokoi + 1];
            Label[] internet = new Label[ilosc_pokoi + 1];

            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                internet[i] = new Label();
                internet[i].Text = "Internet ";
                internet[i].Left = positionleft5;
                internet[i].Top = positiontop5;
                this.Controls.Add(internet[i]);
                positiontop5 += 23;
                checkboxy_internet[i] = new CheckBox();
                checkboxy_internet[i].Left = positionleft5;
                checkboxy_internet[i].Top = positiontop5;
                positiontop5 += 23;
                this.Controls.Add(checkboxy_internet[i]);
            }
            //----------------Barek |TAK/NIE----------------------
            int positionleft6 = 750;
            int positiontop6 = 65;
            CheckBox[] checkboxy_barek = new CheckBox[ilosc_pokoi + 1];
            Label[] barek = new Label[ilosc_pokoi + 1];
            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                barek[i] = new Label();
                barek[i].Text = "Barek ";
                barek[i].Left = positionleft6;
                barek[i].Top = positiontop6;
                this.Controls.Add(barek[i]);
                positiontop6 += 23;
                checkboxy_barek[i] = new CheckBox();
                checkboxy_barek[i].Left = positionleft6;
                checkboxy_barek[i].Top = positiontop6;
                positiontop6 += 23;
                this.Controls.Add(checkboxy_barek[i]);
            }
            //----------------Klimatyzacja |TAK/NIE----------------------
            int positionleft7 = 860;
            int positiontop7 = 65;
            CheckBox[] checkboxy_klima = new CheckBox[ilosc_pokoi + 1];
            Label[] klima = new Label[ilosc_pokoi + 1];
            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                klima[i] = new Label();
                klima[i].Text = "Klimatyzacja ";
                klima[i].Left = positionleft7;
                klima[i].Top = positiontop7;
                this.Controls.Add(klima[i]);
                positiontop7 += 23;
                checkboxy_klima[i] = new CheckBox();
                checkboxy_klima[i].Left = positionleft7;
                checkboxy_klima[i].Top = positiontop7;
                positiontop7 += 23;
                this.Controls.Add(checkboxy_klima[i]);
            }

            //----------------Kasa Pancerna |TAK/NIE----------------------
            int positionleft8 = 970;
            int positiontop8 = 65;
            CheckBox[] checkboxy_kasa_pancerna = new CheckBox[ilosc_pokoi + 1];
            Label[] kasa_pancerna = new Label[ilosc_pokoi + 1];
            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                kasa_pancerna[i] = new Label();
                kasa_pancerna[i].Text = "Kasa Pancerna ";
                kasa_pancerna[i].Left = positionleft8;
                kasa_pancerna[i].Top = positiontop8;
                this.Controls.Add(kasa_pancerna[i]);
                positiontop8 += 23;
                checkboxy_kasa_pancerna[i] = new CheckBox();
                checkboxy_kasa_pancerna[i].Left = positionleft8;
                checkboxy_kasa_pancerna[i].Top = positiontop8;
                positiontop8 += 23;
                this.Controls.Add(checkboxy_kasa_pancerna[i]);
            }

            //----------------Cena za dobe----------------------
            int positionleft9 = 1080;
            int positiontop9 = 65;
            Label[] cena = new Label[ilosc_pokoi + 1];
            TextBox[] textboxy_cena = new TextBox[ilosc_pokoi + 1];
            for (int i = 1; i <= ilosc_pokoi; i++)
            {
                cena[i] = new Label();
                cena[i].Text = "Cena za dobę ";
                cena[i].Left = positionleft9;
                cena[i].Top = positiontop9;
                this.Controls.Add(cena[i]);
                positiontop9 += 23;
                textboxy_cena[i] = new TextBox();
                textboxy_cena[i].Left = positionleft9;
                textboxy_cena[i].Top = positiontop9;
                positiontop9 += 23;
                this.Controls.Add(textboxy_cena[i]);
            }
            int pozycjaostatniego = textboxy_cena[ilosc_pokoi].Top;
            Button zatwierdz = new Button();

            zatwierdz.Click += clickHandler;
            zatwierdz.Top = pozycjaostatniego + 40;
            zatwierdz.Left = 640;
            zatwierdz.Text = "Zatwierdz";
            this.Controls.Add(zatwierdz);
            

        }
       

        void clickHandler(object sender, EventArgs e)
        {
            zatwierdz_Click();
        }
        private void zatwierdz_Click()
        {
           
            /*
             sprawdz_textboxy();

             */
          
        }

Możesz też wrzucić swój mozę coś źle umieszczasz albo czegoś nie widzisz no bo to jest cholerka nie możliwe że u mnie działa u Ciebie nie. Ja pracuje na Visual Studio 2008 a ty ?

0

//To jest ten nie dzialajacy ( tak uzywam VS2008 ):

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public class MyButton : Button
{
public string login;
public string pass;
}

public partial class _Default : System.Web.UI.Page
{
private bool logged = false;

protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{

}
protected void Button2_Click(object sender, EventArgs e)
{
    if (!logged)
    {
        Label log = new Label();
        Label pas = new Label();
        log.Text = "Username";
        pas.Text = "Password";
        TextBox login = new TextBox();
        TextBox pass = new TextBox();
        pass.TextMode = TextBoxMode.Password;
        this.form1.Controls.Add(log);
        this.form1.Controls.Add(login);
        this.form1.Controls.Add(pas);
        this.form1.Controls.Add(pass);
        MyButton btn = new MyButton();
        btn.login = login.Text;
        btn.pass = pass.Text;
        btn.Width = 100;
        btn.Height = 25;
        btn.Text = "Log in";
        btn.Click += new EventHandler(this.btn_Click); // <---------------------
        //btn.Command += new CommandEventHandler(this.btn_Click);
        this.form1.Controls.Add(btn);
    }
    else
    {
        Response.Redirect("MyAccount.aspx");
    }
}

public void btn_Click(Object sender, 
                        EventArgs e) //<---------------------------------
{
    Response.Redirect("MyAccount.aspx");
    MyButton mybtn = (MyButton)sender;
    string log = mybtn.login;
    string pass = mybtn.pass;

    string connectionString = @"Data Source=TOMMY-PC\SQLEXPRESS;Initial Catalog=tom;Integrated Security=True";
    SqlConnection connection = new SqlConnection(connectionString);
    connection.Open();
    string command = "SELECT login, pass FROM Users";
    SqlCommand cmd = new SqlCommand(command, connection);

    string clog;
    string cpas;
    bool tmp = true;
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read() && tmp)
    {
        clog = reader["login"].ToString().Trim();
        cpas = reader["pass"].ToString().Trim();
        //Response.Redirect("www.netwars.pl");
        if (log.Equals(clog) && pass.Equals(pass))
        {
            tmp = false;
            Response.Write("You have been logged in");
        }
    }
    reader.Close();
    connection.Close();
    logged = true;
}

}

//moze ja juz slepy gdzies jestem ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1