我认为这是简单的像在Access中。
用户需要在一个数据表来设置一列的值设置为1或2。
我想提出一个组合框显示“一”,“二”和设置1或2幕后,像我一样,很多时候在接入形式。
在另一侧,如果所示的表它不应出现1或2,但在组合框对应的字符串。
我怎样才能得到这个简单的任务来工作吗?
我认为这是简单的像在Access中。
用户需要在一个数据表来设置一列的值设置为1或2。
我想提出一个组合框显示“一”,“二”和设置1或2幕后,像我一样,很多时候在接入形式。
在另一侧,如果所示的表它不应出现1或2,但在组合框对应的字符串。
我怎样才能得到这个简单的任务来工作吗?
我假设你的意思的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的想法。 这应该让你去和帮助你适应你正在使用的数据源。
这是你如何读取电网的值当在组合框中的值更改:
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
}
}
来源: 这篇文章