Сохранение управляющих значений флажка
Вопрос
Я использую asp.net и я пытаюсь сохранить значения флажков в базе данных.В одно и то же поле базы данных может быть введено несколько флажков.Так, например, у меня есть два флажка с именами "Запятая" и "Дефис", и если пользователь проверит оба из них, то в базе данных будут сохранены значения ',','-'.Как ты это делаешь?
Спасибо
Решение
Чтобы сохранить несколько значений в одном столбце, я бы рекомендовал использовать перечисление флагов.Вот такой пример кода с использованием флажков.
Если вам действительно нужно хранить значения в формате, разделенном запятыми, попробуйте что-то вроде этого:
List<string> values = new List<string>();
if (cbComma.Checked) {
values.Add("','");
}
...
string result = values.ToArray().Join(",");
Другие советы
Я бы согласился с David Thomas Garcia's рекомендация, можете ли вы сохранить значение в базе данных, используя перечисление (как int или что-либо другое, подходящее для количества опций, которые у вас будут).
Однако, если это не вариант, и вы обязаны хранить их в базе данных в виде строки символов, я бы сделал что-то вроде следующего:
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.
}
Обратите внимание, что это не включает в себя какое-либо разделение значений, которые должны быть сохранены в значении, хранящемся в базе данных, но если вам это нужно, вы могли бы использовать Список и делать то, что Дэвид Томас Гарсия упоминается вместе с .toArray().Join(",");в SaveData() и в loadData() просто сделайте dbVal списком, и синтаксис не нуждается в изменении.