ASP dynamiczne kontrolki jak zapisac zawartosc do Session

0

Witam

Zwracam sie z uprzejma prośba o pomoc,
problem polega na tym, że kiedy chce wysłać dane z dynamicznie utworzonych
TextBox'ow (tylko własność Text) do "Sesion["nazwa"]"
Podczas gdy naciskam Przycisk (Button2_Click) cala
zawartosc textBox'ow jest czyszczona ponieważ od nowa tworzy tablice.

Button1_Click-tworzy dynamiczne TextBox'y i pokazuje je w table1
Button2_Click-ta metoda odpowiedzialna jest za wyslanie do session niestety niedziala
table1(jedna kolumna i 10 wierszy), table2(jedna kolumna i 10 wierszy), buttom1, buttm2, label1 są tworzone statycznie

w LabelDynamiczny jest wyświetlana zawartość session

prosze o pomoc

a o to kod mojego programu:

public partial class _Default : System.Web.UI.Page
{
TextBox[] TextBoxDynamiczny;
Label[] LabelDynamiczny;

protected void Page_Load(object sender, EventArgs e)
{
    LabelDynamiczny = new Label[10];
    for (int i = 0; i < 10; i++)
    {
        LabelDynamiczny[i] = new Label();
        Table2.Rows[i].Cells[0].Controls.Add(LabelDynamiczny[i]);
    }

    try
    {
        for (int i = 0; i < 10; i++)
        {
            LabelDynamiczny[i].Text = (string)Session["TextBox" + i];
        }
    }
    catch (NullReferenceException ex)
    {
        Label1.Text = "NIC NIE WYSWIETLA W Label BO NIE MA NICZEGO W SESSION || WIADOMOSC Z NullReferenceException: " + ex.Message;
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    TextBoxDynamiczny = new TextBox[10];
    for (int i = 0; i < 10; i++)
    {
        TextBoxDynamiczny[i] = new TextBox();
        TextBoxDynamiczny[i].Width = 100;
        Table1.Rows[i].Cells[0].Controls.Add(TextBoxDynamiczny[i]);
    }
}

protected void Button2_Click(object sender, EventArgs e)
{
    try
    {
        for (int i = 0; i < 10; i++)
        {
            Session["TextBox" + i] = TextBoxDynamiczny[i].Text;
        }
    }
    catch (NullReferenceException ex)
    {
        Label1.Text = "NIC NIE ZAPISAŁO Z TextBox'OW DO SESSION || WIADOMOSC Z NullReferenceException: " + ex.Message;
    }
}

}

0

Podczas gdy naciskam Przycisk (Button2_Click) cala
zawartosc textBox'ow jest czyszczona ponieważ od nowa tworzy tablice.

skoro po kliknieciu w button2 czyszcza Ci się tablice, więc może zdarzenie Click dla Button2 wywołuje button1_click zamiast button2_click?

0

To ci nie pojdzie z tego powodu ,że strona nie utrzymuje stanu ( po to w koncu zapisuje sie do Sesji) ,wiec po kliknieciu przycisk twoja lista staje sie pusta. Dodatkowo tabela cala tez chyba sie kasuje ,więc musisz ja tworzyc po kazdym postbacku i zapamietywac jej wymiar.

Najlepiej zapoznaj sie z tym artykułem : http://geekswithblogs.net/dotNETvinz/archive/2009/03/17/dynamically-adding-textbox-control-to-aspnet-table.aspx

0
dark_astray napisał(a)

Podczas gdy naciskam Przycisk (Button2_Click) cala
zawartosc textBox'ow jest czyszczona ponieważ od nowa tworzy tablice.

skoro po kliknieciu w button2 czyszcza Ci się tablice, więc może zdarzenie Click dla Button2 wywołuje button1_click zamiast button2_click?

niestety nie

0
lamson napisał(a)

To ci nie pojdzie z tego powodu ,że strona nie utrzymuje stanu ( po to w koncu zapisuje sie do Sesji) ,wiec po kliknieciu przycisk twoja lista staje sie pusta. Dodatkowo tabela cala tez chyba sie kasuje ,więc musisz ja tworzyc po kazdym postbacku i zapamietywac jej wymiar.

Najlepiej zapoznaj sie z tym artykułem : http://geekswithblogs.net/dotNETvinz/archive/2009/03/17/dynamically-adding-textbox-control-to-aspnet-table.aspx

Dzieki wielkie za rego linka przydal sie
a caly sekret jest ukryty w komendzie:
Request.Form["TextBox" + i]; - wybiera stringa z textbox'a (nawet po przeladowaniu)

a o to dzialajacy programik ktory przedstawia jak zapisac dane z dynamicznie utworzonych textbox'ow
mam nadzieje ze sie komus przyda

te obiekty sa tworzone statycznie czyli z design'era

Button1,Table1(jedna kolumna i 10 wierszy),Table2(jedna kolumna i 10 wierszy)

TextBox[] TextBoxDynamiczny;
Label[] LabelDynamiczny;

protected void Page_Load(object sender, EventArgs e)
{
    TworzenieTextBox();
}
protected void TworzenieTextBox()
{
    TextBoxDynamiczny = new TextBox[10];
    for (int i = 0; i < 10; i++)
    {
        TextBoxDynamiczny[i] = new TextBox();
        TextBoxDynamiczny[i].Width = 100;
        TextBoxDynamiczny[i].ID = "TextBox" + i;
        Table1.Rows[i].Cells[0].Controls.Add(TextBoxDynamiczny[i]);
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    LabelDynamiczny = new Label[10];
    for (int i = 0; i < 10; i++)
    {
        LabelDynamiczny[i] = new Label();
        if (Request.Form["TextBox" + i] != string.Empty)
        {
            Table2.Rows[i].Cells[0].Controls.Add(LabelDynamiczny[i]);
            LabelDynamiczny[i].Text = Request.Form["TextBox" + i];
        }
        else
        {
            LabelDynamiczny[i].Text = "--";
            Table2.Rows[i].Cells[0].Controls.Add(LabelDynamiczny[i]);
        }
    }
}

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