Proč proměnná turn null po inicializaci v Page_Init?

hlasů
0

Definuji pole v ve třídě, žádným způsobem, jako globální proměnné, ve stejném rozsahu metody:

TextBox[,] tx = new TextBox[100,100];
TableCell[,] tc = new TableCell[100, 100];
TableRow[] tr = new TableRow[100];

A já inicializovat je v Page_Init události:

protected void Page_Init(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //only for initiializing
            for (int i = 0; i < 100; i++)
            {
                tr[i] = new TableRow();
                for (int j = 0; j < 100; j++)
                {
                    tx[i, j] = new TextBox();
                    tc[i, j] = new TableCell();
                }
            }

        }

    }

ut, když jsem kliknout na tlačítko nebo jakýkoli příspěvek Návrat událost, proměnné navrátili null! Co se děje v tom, že?

================================================== =======================

Který byl řešen pomocí relace ukládat dovnitř, ale teď něco chybí. Jak ušetřit hodnoty v textových polích do tohoto kontejneru relace? A když se k tomu, že?

Položena 21/08/2009 v 13:55
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
5

Pokaždé, když budete dělat žádné zpětné odeslání, i když je to jen proto, aby zpracovat jedno stisknutí tlačítka, budete pracovat se zcela novou instanci své stránky třídě. To je ASP.Net 101.

Chcete-li ji opravit, odstraňte if (!IsPostBack)šek. Pak nastavit všechny jejich viditelné vlastnosti Falsea přidat je na stránku hned. Když se zjistit, kolik je potřeba, nastavte vlastnost Visible na hodnotu „true“ pro to mnoho ovládacích prvků.

Vždy dva existují; nic víc, nic míň. Žádost a odpověď.

Odpovězeno 21/08/2009 v 13:57
zdroj uživatelem

hlasů
0

Zkusili jste jejich přidání do kolekce Controls dané stránky nebo do sbírky Control ovládacího prvku na stránce, jako je skrytý panel?

Odpovězeno 21/08/2009 v 13:57
zdroj uživatelem

hlasů
2

Stránka instance, který je hostitelem pole žije jako server a je vyřazen na konci žádosti. Webové servery mají tendenci být do značné míry bez státní příslušnosti, koneckonců - umožňuje sdružování atd.

Příští požadavek bude vytvořit novou instanci (případně na jiném počítači, pravděpodobně v nové AppDomain, pokud to recyklovaný).

Pro udržení hodnot mezi požadavky, je třeba dát do relace, a přiveď je zpátky sám - nebo je pošlete klientovi na vyžádání (a přivést je zpět).

Odpovězeno 21/08/2009 v 13:58
zdroj uživatelem

hlasů
2

Důvodem je, že stránka je bez státní příslušnosti. Musíte přetrvávat data do stránky samotné tj ViewState:

public TextBox[,] tx
{
   get { return ViewState["tx"] as TextBox[,]; }
   set { ViewState["tx"] = tx; }
}
Odpovězeno 21/08/2009 v 14:00
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more