/ / Jak zapisywać wartości dynamicznie dodawanych pól tekstowych do bazy danych w asp.net - asp.net

Jak zapisać wartości dynamicznie dodawanych pól tekstowych do bazy danych w asp.net - asp.net

cześć Stworzyłem nie. pól tekstowych (które nie zostały wprowadzone przez użytkownika w polu tekstowym txtcount) dynamicznie. Ale chcę przechowywać te wartości w bazie danych. W tym celu użyłem kodu w zdarzeniu kliknięcia przycisku Zapisz w następujący sposób:

protected void btnsave_Click(object sender, EventArgs e)
{
// Check how many textboxes the user created
int count = Convert.ToInt32(txtcount.Text);
// Loop through them
for (int i=0; i < count; i++)
{
// Get the TextBox
TextBox textbox = (TextBox)Page.FindControl("TextBox_" + i);
// Get the value
string val = textbox.Text;

Response.Write(val);

}
}

Ale daje błąd:

Object reference not set to an instance of an object.

Co powinienem zrobić? Proszę pomóż mi? Dziękuję Ci.

Odpowiedzi:

1 dla odpowiedzi № 1

Powinieneś ponownie utworzyć swoje pola tekstowe przy każdym postback w tej samej kolejności. Najlepszym miejscem jest page_init. Być może masz powody, aby to zrobić na page_load. Możesz więc uzyskać jego wartości ze stanu widoku.


1 dla odpowiedzi nr 2

Jeśli chcesz je odnieść, musisz ponownie utworzyć formanty dynamiczne na (każdym) przesyłaniu zwrotnym. Posługiwać się Page_Init lub Page_Load zdarzenie.

Jeszcze inną alternatywą (jeśli nie może się powtarzać po zwrotach) może być bezpośrednie odczytanie wartości z żądania. Na przykład,

string val = Request.Form["TextBox_" + i]

Oczywiście nazwa zmiennej żądania może ulec zmianie, jeśli użyjesz kontrolek szablonowych (lub kontrolek master) w hierarchii nadrzędnej. Jednym z rozwiązań w takim przypadku może być zapisanie nazwy kontrolnej próbki (UniqueID) do przechowywania w stanie widoku.