Ich bin immer noch neu mit .NET arbeiten und bin immer noch ein bisschen verwirrt über die Arbeit mit seinem Lebenszyklus, die ich denke, ich muss mit arbeiten, um dieses Problem zu lösen.C#: Zugriff auf dynamische Steuerelemente nach Page_Load
Ich werde eine vereinfachte Version des Codes hinzufügen, wo ich eine Reihe von Kontrollkästchen mit den Zeichenfolgen in einer Liste erstellen muss. Sobald sie erstellt wurden, sollte ich in der Lage sein, einige davon auszuwählen, auf eine andere Schaltfläche zu klicken und die Anzahl der ausgewählten Kontrollkästchen zu erhalten.
Aufgrund des Neuladens der Seite werden die Kontrollwerte des dynamischen Inhalts entfernt, so dass es nicht funktioniert. Ich habe versucht, etwas wie folgt zu verwenden:
ViewState.Add("panelCheckListContainer", CheckListContainer);
Aber ich bekomme nur Fehler von diesem. Ich habe ähnliche Fragen gesehen, aber ihre Lösungen haben nicht funktioniert oder ich konnte sie nicht funktionieren lassen.
Der Code ist der folgende:
Panel panelCheckListContainer = new Panel();
protected void buttonCheck_Click(object sender, EventArgs e)
{
List<string> results = Get_Rand_Values();
Get_CheckList(results);
}
private void Get_CheckList(List<string> results)
{
CheckBox checkBox;
panelCheckListContainer.ID = "correction-check-list";
panelCheckListContainer.CssClass = "checkbox";
foreach (string result in results)
{
checkBox = new CheckBox();
checkBox.ID = Cypher_MD5(result);
checkBox.Text = result;
//checkBox.CheckedChanged += new EventHandler(Change);
panelCheckListContainer.Controls.Add(checkBox);
}
checkList.Controls.Add(panelCheckListContainer);
}
protected void buttonCount_Click(object sender, EventArgs e)
{
int i = 0;
foreach (Control c in panelCheckListContainer.Controls)
{
if ((c is CheckBox) && ((CheckBox)c).Checked)
{
++i;
}
}
Response.Write("<script>alert('Checked: " + i + "');</script>");
}
Dies ist der Platzhalter, wo die Kontrollkästchen angebracht sind:
<asp:PlaceHolder runat="server" ID="checkList"></asp:PlaceHolder>