DataGridViewComboBoxColumn名称/值怎么样?(DataGridViewCom

2019-07-05 11:54发布

我认为这是简单的像在Access中。

用户需要在一个数据表来设置一列的值设置为1或2。

我想提出一个组合框显示“一”,“二”和设置1或2幕后,像我一样,很多时候在接入形式。

在另一侧,如果所示的表它不应出现1或2,但在组合框对应的字符串。

我怎样才能得到这个简单的任务来工作吗?

Answer 1:

我假设你的意思的DataGridView,这是Windows窗体,而GridView控件是ASP.NET虽然你标记你的问题是这样的。

你是如何将数据绑定到DataGridViewComboBoxColumn? 你需要设置DisplayMember在DataGridViewComboBoxColumn和ValueMember性能,同时设置它的数据源。 在MSDN链接DisplayMember显示了一个例子,但它并不完全展现你的要求是什么,因为它同时设置属性,以同样的事情。

将DisplayMember将是您希望用户看到的文字,和ValueMember将与之相关的隐藏潜在价值。

举一个例子起见,假设你在你的项目中选择类,表示您的选择,看起来像这样:

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()将返回包含您的选择列表。 理想情况下,你会有这样的方法在一个服务层,或者你可以在其他地方建立自己的列表,如果你想(在你的窗体的代码后面)。 为简单起见,我在同一个班混为一谈这一切。

在您的形式则可以将列表绑定到DataGridViewComboBoxColumn如下:

// 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

您现在应该看到在下拉列表“一”和“二”。 当你从它那里得到所选择的值,它应该是底层1或2的值。

这背后使用DisplayMember / ValueMember的想法。 这应该让你去和帮助你适应你正在使用的数据源。



Answer 2:

这是你如何读取电网的值当在组合框中的值更改:

dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing;

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (dataGridView1.CurrentCell.ColumnIndex == 0 && e.Control is ComboBox)
    {
        ComboBox comboBox = e.Control as ComboBox;
        comboBox.SelectedIndexChanged += LastColumnComboSelectionChanged;
    }
}

private void LastColumnComboSelectionChanged(object sender, EventArgs e)
{
    var sendingCB = sender as DataGridViewComboBoxEditingControl;
    object value = sendingCB.SelectedValue;
    if (value != null)
    {
        int intValue = (int)sendingCB.SelectedValue;
        //do something with value
    }
}

来源: 这篇文章



文章来源: DataGridViewComboBoxColumn name/value how?