Laden...

HtmlInputCheckBox auf unerklärlicheweise checked

Erstellt von Bad_Hoschi vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.217 Views
B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren
HtmlInputCheckBox auf unerklärlicheweise checked

Hallo.

ich lese aus einer datenbank ein paar datensätze aus und gebe diese auf einer aspx seite in textboxen aus. um einige datensätze in dem formular zu löschen habe ich vor jeden datensatz eine checkbox. wenn man also eine checkbox anklickt und auf submit drückt wird der datensatz gelöscht. funktioniert ohne probleme doch jetzt kommts: nachdem die nichtgelöschten datensätze wieder ausgegeben werden ist die checkbox des datensatzes welcher auf den gelöschten datensatz folgt angeklickt (checked).

der code der die checkbox auf checked setzt (oder nicht) ist folgender:


System.Web.UI.HtmlControls.HtmlInputCheckBox CheckBox = new HtmlInputCheckBox();
if(DBValue == "True")
{
         CheckBox.Checked = true;
}
else
{
         CheckBox.Checked = false;				
}
tc.Controls.Add(CheckBox);

an die stelle wo

CheckBox.Checked = true;

steht geht es aber nie, jedenfalls nicht bei den checkbox'n zum löschen sondern immer nur zum false. trotzdem ist die nachfolgende checkbox immer checked.

kann mir vielleicht irgend wer sagen warum das so ist oder an was das liegt?
bin für jede antwort dankbar.

mfg

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
das könnte evtl. mit dem ViewSTate zusammenhängnen. Probier mal in der
<@ Page EnableViewState="false">

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren

Hallo.

Danke für deine Antwort, aber EnableViewState steht schon auf false.
Ich habe jetzt auch im Code noch zusätzlich CheckBox.EnableViewState
auf false gesetzt aber es ändert sich trotzdem nix. hast du vielleicht noch
eine andere idee?

mfg

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
weiß leider auch nichts genaues, aber Du kannst mal in der MSDN-Doku nach ASP.NET-Zustandsverwaltung gucken, da gibts eine ganzes Kapitel drüber...

Ansonsten würde ich sagen, daß die Checkboxen deshalb markiert werden, weil für sie die gleiche ID's generiert werden, die vorher die gelöschten Sätze hatten. Daher müsste es auch reichen, die ID selbst zu vergeben und an den Datensatz zu binden:

checkbox.ID = someDbKeyValue.ToString();

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren

ok. vielen dank für deine hilfe. werd das morgen gleich mal ausprobieren. für heute ist erstmal feierabend 😉

mfg

1.130 Beiträge seit 2005
vor 17 Jahren

Wenn die Eigenschaft ID bei Controls nicht gesetzt wird, erhält dieses Control einen automatisch generierten Wert, der sich aus einem Namen und einer fortlaufenden Nummer zusammensetzt.

Wenn Du jetzt ein Control herausfällt nimmt ein anderes seinen Platz ein und wird anhand der ID von der Zustandsverwaltung erkannt und bei Bedarf "checked" gesetzt.

Es reicht also aus, wenn Du den Controls eindeutige IDs gibst. Meistens bietet es sich an einen Namen und den Primärschlüssel der Tabelle zu verwenden.

3.170 Beiträge seit 2006
vor 17 Jahren

@Kai.
Genau das hatte ich doch schon geschrieben.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren

Hey.

danke danke.
hab jetzt den primärschlüssel als ID genommen und jetzt funktionierts. Eigentlich dachte ich aber auch das die checkbox nicht gechecked ist wenn die checked eigentschaft auf false gestzt wird. aber naja jetzt weiß ich wenigstens das er das "ignoriert" 😉

vielen dank nochmal für eure hilfe.

mfg