Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Zuordnung von Bitdatentyp zu Aufzählungstyp von Datenbank zu Dataset in SQL Server 2008

Sie können es auf 1 von 2 Arten handhaben.

1) Anstatt die Daten als Bit zurückzugeben, führen Sie das Casting in Ihrer Abfrage durch, damit es Buy/Sell als Zeichenfolge basierend auf dem Wert zurückgibt. Dies funktioniert nur dann wirklich gut, wenn Ihr Grid schreibgeschützt ist. Wenn Sie in der Lage sein müssen, Daten hinzuzufügen/zu bearbeiten, würde es unordentlich werden, Ihre Käufe/Verkäufe wieder in ein Bit umzuwandeln und zu erzwingen, dass der Benutzer nur Käufe/Verkäufe eingeben kann. Wahrscheinlich möchten Sie Methode 2 verwenden, wenn Sie Daten hinzufügen/bearbeiten müssen.

z.B. Nehmen wir an, Ihr Spaltenname heißt BuySell und ist vom Typ bit

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

2) Sie müssen "Autogeneratecolumns" in DataGridView deaktivieren und Ihre Spalten manuell einrichten. Wenn Ihr Raster schreibgeschützt ist, würde ich eine Textspalte für Ihre Kauf-/Verkaufsspalte hinzufügen, die Ihrem Bitwert zugeordnet ist. Aktualisieren Sie dann im Cell_Formatting-Ereignis für das Raster den Wert basierend auf dem Bit. Etwas wie das Folgende:

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";
        }
    }
}

Wenn Ihr Raster bearbeitbar sein muss, richten Sie eine DataTable ein, die Ihre Kauf-/Verkaufswerte mit einem Anzeigeelement und einem Wertelement darstellt. Binden Sie das als Datenquelle für eine Combobox-Spalte. Jetzt werden beim Laden der Daten Kauf/Verkauf korrekt in der Combobox angezeigt und für neue Zeilen, wenn Sie einen Wert aus der Dropdown-Liste auswählen, wird Ihre zugrunde liegende Datenquelle mit dem korrekten Bitwert gefüllt.