C# 给DataGridViewComboBoxCell下拉列表添加项,会在绑定后清空? 10

我有一列DataGridViewComboBoxColumn但是每个cell的下拉列表内容不同,于是循环for(inti=0,i<max,i++){dgv.Rows.Ad... 我有一列DataGridViewComboBoxColumn但是每个cell的下拉列表内容不同,于是循环
for(int i = 0, i < max, i++)
{
dgv.Rows.Add(new DataGridViewRow());

DataGridViewComboBoxCell cell = dgv.Rows[i].Cells[1] as DataGridViewComboBoxCell; //第二列

//comboCol.Items.AddRange(list[i].toArray()); //comboCol 第二列名

cell.Items.AddRange(list[i].toArray());
}
然后给DataGridView绑定数据源
dgv.DataSource = new BindingList<object>(objList);
dgv.Columns[0].DataPropertyName = "col1";
dgv.Columns[1].DataPropertyName = "col2";
在绑定这三行代码的前后分别检查第二列某行cell的Items.Count发现绑定前有长度,但是绑定后长度为0,也就是给这些cell添加的下拉项都清空了!绑定后再次添加项也没用,还是会清空。另外在循环里如果用注释掉的那行代码,也就是给整列添加项,那就没有问题,但是就不能满足我每个cell下拉内容不同这个需求。
实在没有头绪,不知道怎么回事,求助!
展开
 我来答
阳光的雷咩咩
2014-11-24 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7567万
展开全部

下面的方法实测可行。

        private void SetCellComboBoxItems(int rowIndex, int colIndex, string[] itemsToAdd)
        {
            DataGridViewComboBoxCell dgvcbc = (DataGridViewComboBoxCell)dataGridView1.Rows[rowIndex].Cells[colIndex];
            dgvcbc.Items.Clear();
            foreach (string itemToAdd in itemsToAdd)
            {
                dgvcbc.Items.Add(itemToAdd);
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //下面只是测试数据,每行项目增加1,
            //我的第一列是DataGridViewComboBoxCell
            string[] os;
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                os = new string[i + 1];
                for (int j = 0; j <= i; j++)
                    os[j] = j.ToString();

                SetCellComboBoxItems(i, 0, os);
            }
        }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式