Bạn có thể xử lý bằng 1 trong 2 cách.
1) Thay vì trả về dữ liệu dưới dạng một bit, hãy thực hiện truyền trong truy vấn của bạn để dữ liệu đó trả về Mua / Bán dưới dạng một chuỗi dựa trên giá trị. Điều này sẽ chỉ thực sự hoạt động tốt nếu lưới của bạn ở chế độ chỉ đọc. Nếu bạn cần có thể thêm / chỉnh sửa dữ liệu, sẽ rất lộn xộn khi chuyển đổi Mua / Bán của bạn thành một chút và buộc người dùng chỉ có thể nhập mua / bán. Bạn có thể muốn sử dụng phương pháp 2 nếu bạn cần thêm / chỉnh sửa dữ liệu.
ví dụ. giả sử tên cột của bạn được gọi là BuySell và thuộc loại bit
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2) Bạn sẽ phải tắt "Autogeneratecolumns" trên DataGridView và thiết lập các cột của mình theo cách thủ công. Nếu lưới của bạn ở chế độ chỉ đọc, tôi sẽ thêm một cột văn bản cho cột mua / bán của bạn, cột này ánh xạ đến giá trị bit của bạn. Sau đó, trong sự kiện Cell_Formatting cho lưới, hãy cập nhật giá trị dựa trên bit. Một cái gì đó giống như bên dưới:
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";
}
}
}
Nếu lưới của bạn cần có thể chỉnh sửa, hãy thiết lập DataTable đại diện cho các giá trị Mua / Bán của bạn với một bộ nhớ hiển thị và bộ ghi giá trị. Liên kết đó làm nguồn dữ liệu cho cột hộp tổ hợp. Bây giờ, việc tải dữ liệu sẽ hiển thị chính xác Mua / Bán trong hộp kết hợp và đối với các hàng mới khi bạn chọn một giá trị từ menu thả xuống, nó sẽ điền vào nguồn dữ liệu cơ bản của bạn với giá trị bit chính xác.