Frage

Ich verwende asp.net und ich versuche Checkbox Werte in einer Datenbank zu speichern. Mehrere Kontrollkästchen können in der Datenbank in das gleiche Feld eingetragen werden. So zum Beispiel habe ich zwei Kontrollkästchen mit Namen „Comma“ und „Hyphen“ und wenn der Benutzer überprüft diese beiden dann die Datenbank, die Werte speichern ‚‚‘-‘. Wie machen Sie das?

Dank

War es hilfreich?

Lösung

Um mehrere Werte in die gleiche Spalte speichern würde ich empfehlen, eine Flag-Enumeration verwenden. Hier ist ein Codebeispiel mit Kontrollkästchen .

Wenn Sie wirklich die Werte in einer kommagetrennten Format speichern müssen, könnte etwa so versuchen:

List<string> values = new List<string>();
if (cbComma.Checked) {
   values.Add("','");
}
...
string result = values.ToArray().Join(",");

Andere Tipps

ich mit David Thomas Garcia Empfehlung, wenn Sie den Wert speichern in die Datenbank der Aufzählung mit (als int oder was auch immer für die Menge an Optionen angemessen waren Sie haben werden).

Wenn das nicht eine Option, aber, und Sie sind verpflichtet, sie in der Datenbank als Zeichenfolge zu speichern ich etwas wie die folgenden tun würde:


private void LoadData()
{
   string dbVal = DataAccess.GetDbVal(); //Get your value from the database.
   chkComma.Checked = dbVal.Contains(",");
   chkDash.Checked = dbVal.Contains("-");
}

private void SaveData()
{
   string dbVal = "";
   if(chkComma.Checked)
      dbVal += ",";
   if(chkDash.Checked)
      dbVal += "-";
   DataAccess.SaveDbVal(dbVal); //Send the value of dbVal to your data layer to be saved.
}

Beachten Sie, dass dies beinhaltet keine Trennung der Werte in dem Wert in der Datenbank gespeichert gespeichert werden, aber wenn man benötigt, dass Sie eine Liste verwenden könnte und tun, was David Thomas Garcia mit dem .ToArray erwähnt () Join. (", "); in der Savedata () und in der Loaddata () nur eine Liste machen dbVal und die Syntax muss nicht ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top