Ich stecke auf einer ASP-Seite fest.DataBound ASP: CheckBox-Ereignisse, die nicht wie erwartet ausgelöst werden, weil DataBinding auf Page_Load() auftritt
Die Seite enthält einen ASP: Container mit mehreren CheckBoxen. Ich muss ein Ereignis auf diese CheckBoxes OnCheckChange hinzufügen, so dass jedes Mal, wenn wir auf eine der CheckBoxen klicken, alle anderen Checkboxen deaktiviert werden. Ich könnte einen RadioButton verwenden, aber die Verwendung von CheckBoxes hat andere Vorteile für mich, die außerhalb dieses Themas liegen, deshalb möchte ich keine Radioknöpfe verwenden.
Das theorically fein dies wie funktionieren würde:
<ASP:Repeater id="MyRepeater" runat="server" OnItemDataBound="MyRepeater_ItemDataBound">
<ItemTemplate>
<asp:CheckBox id="MyCB" runat="server" OnCheckedChanged="MyCB_CheckedChanged" AutoPostBack="true" />
<br/>
</ItemTemplate>
</ASP:Repeater>
und in den Code hinter:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MyRepeater.DataSource=DS;
MyRepeater.DataBind();
}
}
protected void MyCB_CheckedChanged(object sender, EventArgs e)
{
UncheckallOtherCheckBoxes();
}
jedoch auch andere Regionen der Seite zu haben, wie erwartet funktionieren, muss ich um die DataSource bei jedem Laden der Seite und nicht nur beim ersten Mal zu binden. Also muss ich Page_Load zu
protected void Page_Load(object sender, EventArgs e)
{
// if (!IsPostBack)
{
MyRepeater.DataSource=DS;
MyRepeater.DataBind();
}
}
Und dies bewirkt, dass alles, was zum Scheitern verurteilt ändern! :) Weil, wenn ich auf ein Kontrollkästchen klicke, es_Onload vor MyCB_CheckedChanged() auslöst. Zuerst werden die DataBinds aufgerufen, und die Datenbindung sendet einige Checkbox-Ereignisse, die nicht vom Benutzer ausgeführt werden.
Gibt es eine Möglichkeit, dies zu lösen ????
Danke im Voraus.
1. Sind Sie sicher, müssen Sie die Datenbank jedes Mal neu binden, wenn die Seite geladen wird? Das ist etwas ungewöhnlich - wenn Sie Ihre Gründe erklären möchten, könnte es anderen helfen, besser zu verstehen. –
@Sandy: Ich denke, weil der in der Pose erwähnte Container in einen anderen Container geschachtelt ist. Wenn ich den Hauptcontainer für PostBack nicht neu bin, merke ich, dass alle untergeordneten Container keine Daten haben. –