Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Mappage du type de données bit au type enum de la base de données au jeu de données dans SQL Server 2008

Vous pouvez le gérer de 1 à 2 façons.

1) Au lieu de renvoyer les données sous forme de bit, effectuez le casting dans votre requête pour qu'elle renvoie Buy/Sell sous forme de chaîne basée sur la valeur. Cela ne fonctionnera vraiment bien que si votre grille est en lecture seule. Si vous avez besoin de pouvoir ajouter/modifier des données, il serait compliqué de reconvertir votre achat/vente en un peu et d'imposer que l'utilisateur ne puisse saisir que l'achat/la vente. Vous voudrez probablement utiliser la méthode 2 si vous devez ajouter/modifier des données.

par exemple. disons que le nom de votre colonne s'appelle BuySell et est de type bit

SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName

2) Vous devrez désactiver "Autogeneratecolumns" sur le DataGridView et configurer vos colonnes manuellement. Si votre grille est en lecture seule, j'ajouterais une colonne de texte pour votre colonne d'achat/vente qui correspond à votre valeur en bits. Ensuite, dans l'événement Cell_Formatting pour la grille, mettez à jour la valeur en fonction du bit. Quelque chose comme ci-dessous :

private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (dgv.Columns[e.ColumnIndex].Name == "buysell")
    {
        if (e.Value != null)
        {
            if (e.Value.ToString() == "1")
            {
                e.Value = "Sell";
            }
            else
            {
                e.Value = "Buy";
            }
        }
        else
        {
            e.Value = "Buy";
        }
    }
}

Si votre grille doit être modifiable, configurez un DataTable qui représente vos valeurs d'achat/vente avec un displaymember et un valuemember. Liez-le en tant que source de données pour une colonne combobox. Désormais, le chargement des données affichera correctement Achat/Vente dans la liste déroulante et pour les nouvelles lignes, lorsque vous sélectionnez une valeur dans la liste déroulante, il remplira votre source de données sous-jacente avec la valeur de bit correcte.