Tôi giả sử bạn có nghĩa là DataGridView, đó là dành cho Windows Forms, trong khi GridView là cho ASP.NET mặc dù bạn đã gắn thẻ câu hỏi của bạn như vậy.
Bạn liên kết dữ liệu với DataGridViewComboBoxColumn như thế nào? Bạn sẽ cần đặt các thuộc tính DisplayMember và ValueMember trên DataGridViewComboBoxColumn trong khi thiết lập DataSource của nó. Các liên kết MSDN để DisplayMember cho thấy một ví dụ, nhưng nó không hoàn toàn hiển thị những gì bạn đang yêu cầu vì nó đặt cả hai thuộc tính cho cùng một điều.
DisplayMember sẽ là văn bản bạn muốn người dùng xem và ValueMember sẽ là giá trị ẩn tiềm ẩn được liên kết với nó.
Vì lợi ích của một ví dụ, giả sử bạn có một lớp Choice trong dự án của bạn đại diện cho lựa chọn của bạn và trông như thế này:
public class Choice
{
public string Name { get; private set; }
public int Value { get; private set; }
public Choice(string name, int value)
{
Name = name;
Value = value;
}
private static readonly List<Choice> possibleChoices = new List<Choice>
{
{ new Choice("One", 1) },
{ new Choice("Two", 2) }
};
public static List<Choice> GetChoices()
{
return possibleChoices;
}
}
GetChoices() sẽ trả về một danh sách có chứa sự lựa chọn của bạn. Lý tưởng nhất là bạn sẽ có một phương thức như vậy trong một lớp dịch vụ, hoặc bạn có thể xây dựng danh sách riêng của mình ở nơi khác nếu bạn muốn (trong mã của biểu mẫu của bạn phía sau). Để đơn giản tôi đã gộp tất cả lại với nhau trong cùng một lớp.
Ở dạng của bạn, bạn sẽ liên kết danh sách để các DataGridViewComboBoxColumn như sau:
// reference the combobox column
DataGridViewComboBoxColumn cboBoxColumn = (DataGridViewComboBoxColumn)dataGridView1.Columns[0];
cboBoxColumn.DataSource = Choice.GetChoices();
cboBoxColumn.DisplayMember = "Name"; // the Name property in Choice class
cboBoxColumn.ValueMember = "Value"; // ditto for the Value property
Bây giờ bạn sẽ thấy "One" và "Hai" trong combobox. Khi bạn nhận được giá trị được chọn từ nó, nó phải là giá trị 1 hoặc 2 nằm bên dưới.
Đó là ý tưởng đằng sau việc sử dụng DisplayMember/ValueMember. Điều này sẽ giúp bạn tiếp tục và giúp bạn điều chỉnh nguồn dữ liệu bạn đang sử dụng.
Đây là câu trả lời hoàn hảo! Cảm ơn bạn Ahmad! Reinhard –
Làm cách nào chúng ta có thể đọc giá trị được chọn của một ô thả xuống trong datagrid? – Meysam
Không biết điều đó thật đơn giản! Cảm ơn – Jack