我正在尝试将DataGridView中的单独ComboBox单元绑定到自定义类,并继续收到错误
DataGridViewComboBoxCell值无效
我现在正在将单元格的数据源分配给IList<ICustomInterface>我所拥有的词典.但是,在设置数据源时,ComboBoxCell未设置索引,因此选择了无效值.
我试图弄清楚如何让它选择一个真正的值,例如列表中的第0个项目,它已被删除此错误,或找到解决问题的另一种方法.有人有什么建议吗?
我在Datagridview中有这样的表:
Name Money
-------------
Hi 100 //here Combobox with member {10,30,80,100} to choose
Ki 30 //here Combobox with member {10,30,80,100} to choose
Run Code Online (Sandbox Code Playgroud)
我想从组合框中更改列"Money"值
我试过这个,但不知道进一步:
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(String));
dt.Columns.Add("Money", typeof(String));
dt.Rows.Add(new object[] { "Hi", 100});
dt.Rows.Add(new object[] { "Ki", 30});
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
var list11 = new List<string>() { "10", "30", "80", "100" };
column.DataSource = list11;
column.ValueMember = "Money";
dataGridView1.Columns.Add(column);
Run Code Online (Sandbox Code Playgroud) 我有一个DataGridView与ComboBox它可能包含一些相当大的字符串.有没有办法让下拉列表扩展自己或至少wordwrap字符串,以便用户可以看到整个字符串,而我不必调整ComboBox列宽?
我认为这很简单,就像在Access中一样.
用户需要将数据表中一列的值设置为1或2.
我想呈现一个组合框,显示"ONE","TWO"并在场景后面设置1或2,就像我在Access-Forms中做过很多次一样.
另一方面,如果显示该表,则它不应显示1或2,而是显示ComboBox中的相应字符串.
我怎样才能让这个简单的任务工作?
嗨我运行时将数据绑定到datagridview组合框.但是如何让它自动显示第一项呢?我无法从DataGridViewComboBoxColumn中找到selectedindex.
DataGridViewComboBoxColumn cbStudentCourse = (DataGridViewComboBoxColumn)dgStudentCourse.Columns["studentCourseStatus"];
cbStudentCourse.DataSource = Enum.GetValues(typeof(CourseStudentStatus));
cbStudentCourse.DisplayIndex = 1;
Run Code Online (Sandbox Code Playgroud)
- 更新---
我看到有人在解决方案中做这个3
LInk
你确定我需要这么长的代码来选择第一个项目??????
我正在使用(EditingControlShowing)事件在DataGridViewComboBox列中启用自动完成.
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is DataGridViewComboBoxEditingControl)
{
ComboBox combo = (ComboBox)e.Control;
((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems;
((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
}
}
Run Code Online (Sandbox Code Playgroud)
但它有一个奇怪的行为,当我键入一些字符然后我离开单元格(Tab或右键),值没有改变.
但如果我重复一遍,那么价值就会改变.从这里,您可以下载解释问题的源代码和(EXE)视频.
你能帮助我让它正常工作吗?
c# combobox datagridview datagridviewcombobox datagridviewcomboboxcell
我正在努力DataGridViewComboBoxCell.在某些情况下(比方说,事件)我必须ComboBox在我的表格中预先选择一个值DataGridView.当用户更改一个框时,我可以以编程方式更改另一个框:
var item = ItemName.Items.GetListItem(name);
if (item != null)
{
_loading = true; // that's needed to come around another CellValueChanged events
itemView.Rows[e.RowIndex].Cells["ItemName"].Value = item;
_loading = false;
}
Run Code Online (Sandbox Code Playgroud)
我这样填充ItemName.Items:
foreach (var item in _model.DefaultData.ItemList)
{
if (item.Value.Code.HasValue()) ItemCode.Items.Add(new ListItem(item.Key, item.Value.Code));
ItemName.Items.Add(new ListItem(item.Key, item.Value.Name));
}
Run Code Online (Sandbox Code Playgroud)
GetListItem方法:
public static ListItem GetListItem(this DataGridViewComboBoxCell.ObjectCollection col, string name)
{
ListItem retItem = null;
foreach (ListItem item in col)
{
if (item.Name == name) { retItem = …Run Code Online (Sandbox Code Playgroud) c# datagridview datagridviewcombobox winforms datagridviewcomboboxcell
我从datagridview中嵌入的datagridviewcombobox(下拉菜单)控件中选择一个新值时遇到异常.组合框由BindingSource填充,其中填充了我的类的实例.我可以正确显示菜单中的选项,然后选择一个,但是将焦点更改为新控件(我猜想提交更改)会导致出现异常:从System.String到myclass的无效转换.堆栈跟踪(如果我正确使用该字)显示源是
System.Windows.Forms.DataGridView.PushFormattedValue级联到System.Convert.DefaultToType
下面有一个更明确的解释(抱歉它很长,但我想让它可重复):
我有一个名为Occupant的空类,没有属性(当Occupant也有一个字符串Name属性时,问题就存在了,所以不是这样).我有一个名为OccupantSource的BindingSource,其DataSource指向Occupant.
我还有一个叫做Car的类,有一个名为Driver的Occupant属性.
在我的Form_Load()中,我两次调用OccupantSource.AddNew(),并调用一次CarSource.AddNew().
我有一个DataGridView控件,其DataSource是CarSource(由Cars组成的BindingSource).DGV有一列,显示CarSource中汽车的Driver属性.它是一个DataGridViewComboBoxColumn,DataPropertyName设置为驱动程序.
所以我想要的是在Datagridview中显示汽车行,其中一列是组合框,我可以下拉并从现有的Occupant实例中选择一个驱动程序.但我得到了例外.
这是我误解的事吗?你能不能使用类的实例来填充DataGridViewComboBox?
这是联系人,但我们可以有多个联系人,所以我想在组合框中显示一个列表
DataTable dt = new DataTable();
dt = MainClass.GetDatabyQuery("select * from tbl");
if (dt.Rows.Count > 0)
{
dgv_ClientDetail.DataSource = dt;
}
Run Code Online (Sandbox Code Playgroud)
我有这个方法从datagridview中的数据库中获取值,但我想要一个datagridview组合框列,并希望将数据绑定在一个dgv组合框和其他dgv texbox中.如果有人知道那么告诉我.这里有三列名称,城市,联系人.我想在dgv组合框列中显示多个联系人
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
int n = dataGridView1.CurrentCell.RowIndex;
if (dataGridView1.CurrentCell.ColumnIndex == 0)
{
var cbCell = dataGridView1.Rows[n].Cells["category"] as DataGridViewComboBoxCell;
DataTable dt = c1.ret("select category from category").Tables[0];
cbCell.DataSource = dt;
cbCell.ValueMember = "category";
cbCell.DisplayMember = "category";
cbCell.FlatStyle = FlatStyle.System;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试为数据网格组合框设置数据源,但是当我设置数据源时。组合框颜色的下拉列表变成黑色。我尝试了一些设置背景颜色的代码,但每个代码都失败了。现在我被我的项目困住了。请帮我....