valores de controle Saving CheckBox
Pergunta
Eu estou usando asp.net e estou tentando salvar valores de caixa de seleção em um banco de dados. Múltiplas caixas podem ser inseridos no mesmo campo no banco de dados. Assim, por exemplo Eu tenho duas caixas com nomes "Vírgula" e "hífen" e se o usuário verifica tanto destes, então o banco de dados irá armazenar os valores ' '' -'. Como você faz isso?
graças
Solução
Para salvar vários valores na mesma coluna eu recomendo usar uma enumeração bandeira. Aqui é um exemplo de código usando caixas .
Se você realmente tem que armazenar os valores em um formato delimitado por vírgula, poderia tentar algo como isto:
List<string> values = new List<string>();
if (cbComma.Checked) {
values.Add("','");
}
...
string result = values.ToArray().Join(",");
Outras dicas
Eu concordo com a recomendação David Thomas Garcia se você pode salvar o valor ao banco de dados usando a enumeração (como um int ou o que era apropriado para a quantidade de opções que você tem).
Se isso não é uma opção, porém, e você é obrigado a armazená-los no banco de dados como uma seqüência de caracteres que eu faria algo como o seguinte:
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.
}
Note que esta não inclui qualquer separação dos valores a serem salvos no valor armazenado no banco de dados, mas se necessário que você poderia usar uma lista e fazer o que David Thomas Garcia mencionado com o .ToArray () Unir. (", "); na SaveData () e na LoadData () apenas fazer dbVal uma lista e a sintaxe não precisa de mudança.