Hallo an alle und vielen Dank im Voraus,Wie bewahren die Werte Zugriff auf dynamische Steuerungen
Ich habe mehrere Threads über gelesen, aber ich bin sehr verwirrt. Die Sache ist, ich bin zu schaffen dynamisch einige Textfelder in einem Panel-Steuerelement, die in einem Formview whith diesem Code platziert ...
protected void Muestra_Precio_Stock_BT_Click(object sender, EventArgs e)
{
CheckBoxList FormatosCL = (CheckBoxList)FormViewDiscos.FindControl("FormatosCL");
Panel Precio_Stock_PN = (Panel)FormViewDiscos.FindControl("CB_Precio_Stock_PN");
Label NuevoPrecioLB = null;
TextBox NuevoPrecioTB = null;
Label NuevoStockLB = null;
TextBox NuevoStockTB = null;
foreach (ListItem item in FormatosCL.Items)
{
if(item.Selected)
{
NuevoPrecioLB = new Label();
NuevoPrecioTB = new TextBox();
NuevoStockLB = new Label();
NuevoStockTB = new TextBox();
NuevoPrecioLB.ID = "NuevoPrecioLB_" + FormatosCL.Items.IndexOf(item);
NuevoPrecioLB.Text = "PRECIO " + item.Text + ": ";
NuevoPrecioTB.ID = "NuevoPrecioTB_" + FormatosCL.Items.IndexOf(item);
NuevoStockLB.ID = "NuevoStockLB_" + FormatosCL.Items.IndexOf(item);
NuevoStockLB.Text = " STOCK " + item.Text + ": ";
NuevoStockTB.ID = "NuevoStockTB_" + FormatosCL.Items.IndexOf(item);
Precio_Stock_PN.Controls.Add(NuevoPrecioLB);
Precio_Stock_PN.Controls.Add(NuevoPrecioTB);
Precio_Stock_PN.Controls.Add(NuevoStockLB);
Precio_Stock_PN.Controls.Add(NuevoStockTB);
Precio_Stock_PN.Controls.Add(new LiteralControl("<br />"));
}
}
}
Nun, das funktioniert gut, wenn ich das Projekt die Textfelder und Etiketten laufen erstellt werden Wie erwartet, kann ich sie sehen und in die Textfelder schreiben. Ich habe denselben Code in das Page_Load -Ereignis eingefügt und jetzt kann ich die erstellten Steuerelemente abrufen und die Null-Null-Erkennung vermeiden (das war mein erstes Problem), wenn ich auf die INSERT-Schaltfläche der Formularansicht klicke. Das Problem ist, dass in dem folgenden Code ...
protected void InsertButton_Click(object sender, EventArgs e)
{
TextBox DiscIdTB = (TextBox)FormViewDiscos.FindControl("DiscIdTB");
TextBox CaratulaTB = (TextBox)FormViewDiscos.FindControl("CaratulaTB");
CheckBoxList CancionesCL = (CheckBoxList)FormViewDiscos.FindControl("CancionesCL");
CheckBoxList FormatosCL = (CheckBoxList)FormViewDiscos.FindControl("FormatosCL");
using (SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["ConexionBBDD-Discos"].ConnectionString))
{
conexion.Open();
cmd.Connection = conexion;
cmd.CommandText = "INSERT INTO DISCOS_FORMATOS (ID_DISCO, ID_FORMATO, PRECIO, STOCK) VALUES ((SELECT MAX(ID_DISCO) FROM DISCOS), @IdFormato, 0, 0)";
foreach (ListItem item in FormatosCL.Items)
{
if (item.Selected)
{
Panel Precio_Stock_PN = (Panel)FormViewDiscos.FindControl("CB_Precio_Stock_PN");
string control = "NuevoPrecioTB_" + (FormatosCL.Items.IndexOf(item));
string control2 = "NuevoStockTB_" + (FormatosCL.Items.IndexOf(item));
TextBox Precio = (TextBox)Precio_Stock_PN.FindControl(control);
TextBox Stock = (TextBox)Precio_Stock_PN.FindControl(control2);
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@IdFormato", item.Value);
cmd.Parameters.AddWithValue("@IdPrecio", Convert.ToInt32(Precio.Text));
cmd.Parameters.AddWithValue("@IdStock", Convert.ToInt32(Stock.Text));
cmd.ExecuteNonQuery();
}
}
conexion.Close();
cmd.Dispose();
}
}
, wenn die Ausführung dieser Zeilen erreicht, dynamisch erstellte Textfelder ihre Werte verloren, Rückkehr immer 0 ...
cmd.Parameters.AddWithValue("@IdPrecio", Convert.ToInt32(Precio.Text));
cmd.Parameters.AddWithValue("@IdStock", Convert.ToInt32(Stock.Text));
Wie kann ich erhalten ihre Benutzer eingegebenen Werte?
Danke für Ihre Antwort Fenrir88. Ich habe den Muestra_Precio_Stock_BT_Click-Code, also denjenigen, der die Steuerelemente erstellt, in Page_Load wie angegeben eingefügt, aber die Werte sind immer noch 0, meinst du den Code von InsertButton_Click? – Mazinger
Hmm ... okay, um sicher zu sein, könnten Sie vielleicht den Page_Load Ereigniscode teilen. Wenn ich den Code richtig verstehe, wenn Sie auf die Schaltfläche Muestra_Precio_Stock klicken, weisen Sie den Beschriftungen und der Textbox Null zu (wodurch Daten in ihnen gelöscht werden). Wenn ein Element ausgewählt ist, erstellen Sie es erneut und fügen Sie den Text des ausgewählten Elements hinzu. Ist das richtig? – Fenrir88
Ok Fenrir88, es ist dank ein paar Hinweisen, die du mir gegeben hast, gelöst worden, wie das Einfügen des Codes in das Load_Page-Event und das Entfernen von Null-Assigments für die Steuerelemente, hmmm und naja, nennen wir es "ein kleines Detail" ... Wenn Sie achten am Ende meiner INSERT-Anweisung, nun ... ICH HABE ZWISCHEN DEN TEXTBOXEN-WERTEN ZULETZT HINZUGEFÜGT "- Oh, es war meine Schuld, Entschuldigung. Aber wie ich schon sagte, Ihre Hinweise waren essentiell, also danke Sie wieder. – Mazinger