C# .NET WinForm,datagridview 中的DataGridViewComboBoxColumn怎么设置默认值?

时间:2022-08-13 09:55:27
代码如下,求高手指点下怎么设置DataGridViewComboBoxColumn的默认值,谢谢
DataGridViewComboBoxColumn SignsCondition = new DataGridViewComboBoxColumn();
            SignsCondition.Items.Insert(0, "签收时间");
            SignsCondition.Items.Insert(1, "签收时间");
            SignsCondition.Items.Insert(2, "承运时间");
            SignsCondition.Items.Insert(3, "结算公司");
            SignsCondition.DataPropertyName = SignsCondition.Items[0].ToString();
            datagridview.Columns.Add(SignsCondition);

18 个解决方案

#1


自己顶下.

#2


VS 2005里面好象很方便啊

#3


ComboBoxColumn没不支持此功能,但可通过转换成ComboBox实现:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == 0) //判断是否ComboBoxColumn所在列 
            {
                ComboBox cb = e.Control as ComboBox;
                if (cb != null)
                {                    
                    cb.SelectedValue=2;//设置默认值
                }
            }
        }

#4


或者设置其绑定的数据源对应列的默认值也可以实现 如DataTable

#5


引用 3 楼 ydsunny 的回复:
ComboBoxColumn没不支持此功能,但可通过转换成ComboBox实现: 

C# code
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == 0) //判断是否ComboBoxColumn所在列 
            {
                ComboBox cb = e.Control as ComboBox;
                if (cb != null)
           …


多谢楼上,可是我引用了你的代码后还是不行?另外我绑定的ComboBoxColumn列是在dataGridView1的第二列,第一列是DataGridViewCheckBoxColumn,会不会是和这个有关呢?

#6


还是不行啊,求高手们指教.
万分感谢了。

#7


呵呵,你把我代码中的这一句:if (dataGridView1.CurrentCell.ColumnIndex == 0)
改成:if (dataGridView1.CurrentCell.ColumnIndex == 1),才是判断第二列!

下标从0开始.

#8


引用 7 楼 ydsunny 的回复:
呵呵,你把我代码中的这一句:if (dataGridView1.CurrentCell.ColumnIndex == 0) 
改成:if (dataGridView1.CurrentCell.ColumnIndex == 1),才是判断第二列! 

下标从0开始.


还是不行,默认项还是空的..

#9


我是直接指定單元格的值
               //運算符默認值
                foreach (DataGridViewRow cRow in dgvQuery.Rows)
                {
                    cRow.Cells["FieldOrder"].Value = "asc";//排序默認值為生序
                    cRow.Cells["FieldLogic"].Value = "AND";//邏輯默認值為並且
                 }
拿兩列都是DataGridViewComboBoxColumn

#10


引用 9 楼 hanjoe109 的回复:
我是直接指定單元格的值
//運算符默認值
foreach (DataGridViewRow cRow in dgvQuery.Rows)
{
cRow.Cells["FieldOrder"].Value = "asc";//排序默認值為生序
cRow.Cells["FieldLogic"].Value = "AND";//邏輯默認值為並且
}
拿兩列都是DataGridViewComboBoxColumn


補充:DataGridViewComboBoxColumn都綁定了DataTable

#11


ding

#12


引用 9 楼 hanjoe109 的回复:
我是直接指定單元格的值 
               //運算符默認值 
                foreach (DataGridViewRow cRow in dgvQuery.Rows) 
                { 
                    cRow.Cells["FieldOrder"].Value = "asc";//排序默認值為生序 
                    cRow.Cells["FieldLogic"].Value = "AND";//邏輯默認值為並且 
                 } 
拿兩列都是DataGridViewComboBoxColumn


感谢hanjoe109,默认值显示出来了。
但是还有一点问题,就是当我把鼠标放到我绑定的FieldOrder列时,它就会弹出以下出错信息:
"System.ArgumentException: DataGridviewCoboBoxCell 值无效。
要替换此默认对话框,请处理 DataError 事件。"

这是怎么回事呢.虚心请教学习。

#13


也进来学习下

#14


 dataGridView1[4, 2].Value = ((DataGridViewComboBoxCell)dataGridView1[4, 2]).Items[0].ToString(); 
 设置第2行第5列的默认值为ComboBox中的第一项(Items[0]),此列为DataGridViewComboBoxCell。
 搂主可参考下,不知是不是搂主想要的。

#15


也进来学习下

#16


budong

#17


顶顶 呵呵

#18


 
<code>


if (dgr.Cells[5] is DataGridViewComboBoxCell)
                {
                    DataGridViewComboBoxCell cbocell = dgr.Cells[5] as DataGridViewComboBoxCell;
                    if (cbocell != null)
                    {
                        RS_SysRuleCboItem def = new RS_SysRuleCboItem(rules[1]);//设置默认值
                        for (int j = 1; j < rules.Length; j++)
                        {//绑定数据
                            if(j==1)
                            {                                
                                cbocell.Items.Add(def);
                            }
                            else
                            cbocell.Items.Add(new RS_SysRuleCboItem(rules[j]));
                            
                        }
                        cbocell.DisplayMember = "DisplayMember";
                      dgr.Cells[5].Value=def;//绑定默认值
                       
                    }

                   
                    

                }
</code>

#1


自己顶下.

#2


VS 2005里面好象很方便啊

#3


ComboBoxColumn没不支持此功能,但可通过转换成ComboBox实现:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == 0) //判断是否ComboBoxColumn所在列 
            {
                ComboBox cb = e.Control as ComboBox;
                if (cb != null)
                {                    
                    cb.SelectedValue=2;//设置默认值
                }
            }
        }

#4


或者设置其绑定的数据源对应列的默认值也可以实现 如DataTable

#5


引用 3 楼 ydsunny 的回复:
ComboBoxColumn没不支持此功能,但可通过转换成ComboBox实现: 

C# code
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == 0) //判断是否ComboBoxColumn所在列 
            {
                ComboBox cb = e.Control as ComboBox;
                if (cb != null)
           …


多谢楼上,可是我引用了你的代码后还是不行?另外我绑定的ComboBoxColumn列是在dataGridView1的第二列,第一列是DataGridViewCheckBoxColumn,会不会是和这个有关呢?

#6


还是不行啊,求高手们指教.
万分感谢了。

#7


呵呵,你把我代码中的这一句:if (dataGridView1.CurrentCell.ColumnIndex == 0)
改成:if (dataGridView1.CurrentCell.ColumnIndex == 1),才是判断第二列!

下标从0开始.

#8


引用 7 楼 ydsunny 的回复:
呵呵,你把我代码中的这一句:if (dataGridView1.CurrentCell.ColumnIndex == 0) 
改成:if (dataGridView1.CurrentCell.ColumnIndex == 1),才是判断第二列! 

下标从0开始.


还是不行,默认项还是空的..

#9


我是直接指定單元格的值
               //運算符默認值
                foreach (DataGridViewRow cRow in dgvQuery.Rows)
                {
                    cRow.Cells["FieldOrder"].Value = "asc";//排序默認值為生序
                    cRow.Cells["FieldLogic"].Value = "AND";//邏輯默認值為並且
                 }
拿兩列都是DataGridViewComboBoxColumn

#10


引用 9 楼 hanjoe109 的回复:
我是直接指定單元格的值
//運算符默認值
foreach (DataGridViewRow cRow in dgvQuery.Rows)
{
cRow.Cells["FieldOrder"].Value = "asc";//排序默認值為生序
cRow.Cells["FieldLogic"].Value = "AND";//邏輯默認值為並且
}
拿兩列都是DataGridViewComboBoxColumn


補充:DataGridViewComboBoxColumn都綁定了DataTable

#11


ding

#12


引用 9 楼 hanjoe109 的回复:
我是直接指定單元格的值 
               //運算符默認值 
                foreach (DataGridViewRow cRow in dgvQuery.Rows) 
                { 
                    cRow.Cells["FieldOrder"].Value = "asc";//排序默認值為生序 
                    cRow.Cells["FieldLogic"].Value = "AND";//邏輯默認值為並且 
                 } 
拿兩列都是DataGridViewComboBoxColumn


感谢hanjoe109,默认值显示出来了。
但是还有一点问题,就是当我把鼠标放到我绑定的FieldOrder列时,它就会弹出以下出错信息:
"System.ArgumentException: DataGridviewCoboBoxCell 值无效。
要替换此默认对话框,请处理 DataError 事件。"

这是怎么回事呢.虚心请教学习。

#13


也进来学习下

#14


 dataGridView1[4, 2].Value = ((DataGridViewComboBoxCell)dataGridView1[4, 2]).Items[0].ToString(); 
 设置第2行第5列的默认值为ComboBox中的第一项(Items[0]),此列为DataGridViewComboBoxCell。
 搂主可参考下,不知是不是搂主想要的。

#15


也进来学习下

#16


budong

#17


顶顶 呵呵

#18


 
<code>


if (dgr.Cells[5] is DataGridViewComboBoxCell)
                {
                    DataGridViewComboBoxCell cbocell = dgr.Cells[5] as DataGridViewComboBoxCell;
                    if (cbocell != null)
                    {
                        RS_SysRuleCboItem def = new RS_SysRuleCboItem(rules[1]);//设置默认值
                        for (int j = 1; j < rules.Length; j++)
                        {//绑定数据
                            if(j==1)
                            {                                
                                cbocell.Items.Add(def);
                            }
                            else
                            cbocell.Items.Add(new RS_SysRuleCboItem(rules[j]));
                            
                        }
                        cbocell.DisplayMember = "DisplayMember";
                      dgr.Cells[5].Value=def;//绑定默认值
                       
                    }

                   
                    

                }
</code>