Salvataggio dei valori di controllo CheckBox
Domanda
Sto usando asp.net e sto cercando di salvare i valori della casella di controllo in un database. È possibile inserire più caselle di controllo nello stesso campo nel database. Ad esempio, ho due caselle di controllo con i nomi "Virgola" e " trattino " e se l'utente controlla entrambi, il database memorizzerà i valori ',', '-'. Come si fa?
grazie
Soluzione
Per salvare più valori nella stessa colonna, ti consiglio di usare un elenco di flag. Ecco un esempio di codice usando le caselle di controllo .
Se devi davvero archiviare i valori in un formato delimitato da virgole, potresti provare qualcosa del genere:
List<string> values = new List<string>();
if (cbComma.Checked) {
values.Add("','");
}
...
string result = values.ToArray().Join(",");
Altri suggerimenti
Concordo con la raccomandazione di David Thomas Garcia se è possibile salvare il valore al database usando l'enumerazione (come int o qualunque cosa fosse appropriata per la quantità di opzioni che avrai).
Se questa non è un'opzione, e sei tenuto a memorizzarli nel database come una stringa di caratteri, farei qualcosa del tipo:
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.
}
Si noti che ciò non include alcuna separazione dei valori da salvare nel valore memorizzato nel database, ma se fosse necessario è possibile utilizzare un Elenco e fare ciò che David Thomas Garcia menzionato con .ToArray (). Join (", "); in SaveData () e in LoadData () basta fare di dbVal un elenco e la sintassi non deve essere modificata.