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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top