【问题标题】:C# DataGridView combobox add data programmaticallyC# DataGridView 组合框以编程方式添加数据
【发布时间】:2011-09-07 14:45:53
【问题描述】:

我有一个带有 DataGridView 的应用程序。其中一列是组合框类型。我想以编程方式为此组合框添加项目。这是我使用的代码:

this.dsStatussen = this.statussenMan.getAllStatussen();
        DataGridViewComboBoxColumn cd = (DataGridViewComboBoxColumn)this.dgvEenheden.Columns[3];
        cd.DataSource = dsStatussen;
        cd.DisplayMember = "statussen";
        cd.DataPropertyName = "sid";
        cd.ValueMember = "status";

然后,当我尝试添加一行时,我收到以下错误:“没有名称状态的字段”。我将错误翻译成英语,因为我有一个荷兰语错误。 这是我用于添加行的代码:

Eenheden eenhedenMan = new Eenheden(objEvenement.eid);
        DataSet EenhedenData = eenhedenMan.getAllEenheden();

        foreach (DataRow dr in EenhedenData.Tables[0].Rows)
        {
            dgvEenheden.Rows.Add(
                                    dr[0].ToString(), 
                                    dr[1].ToString(), 
                                    dr[2].ToString(), 
                                    Convert.ToInt32(dr[6]), 
                                    dr[3].ToString(), 
                                    dr[4].ToString(), 
                                    dr[5].ToString()
                                );
        }

有人可以帮我弄清楚我做错了什么吗?我找不到它。这是我第一次使用带有组合框的 DataGridView。

【问题讨论】:

  • 您的实际数据源是什么样的?颂歌它有两列(statussen 和 status)??
  • 我的数据源是一个有一个表的数据集。该表确实有 2 列:sid 和 status

标签: c# items datagridcomboboxcolumn


【解决方案1】:

根据我的经验,如果您通过绑定源将其绑定,我发现一切似乎都会更好,然后设置

bindingScource.dataScource.Rows.Add( 
                                    dr[0].ToString(),  
                                    dr[1].ToString(),  
                                    dr[2].ToString(),  
                                    Convert.ToInt32(dr[6]),  
                                    dr[3].ToString(),  
                                    dr[4].ToString(),  
                                    dr[5].ToString() 
                                ); 

【讨论】:

  • 你的意思是我应该将数据直接从DataSet EenhedenData绑定到DataGridView?像这样:dgvEenheden.DataSource = EenhedenData.Tables[0];当我这样做时,我得到了同样的错误:没有名称为 status 的字段。
  • 好的,我让它工作到了 statussen 被绑定的部分。所以在组合框中我看到了我想要的项目。现在我有另一个问题。在数据行中,我添加的第 6 列 (dr[6]) 有一个整数值,指示应选择的状态的 ID。添加行时,如何以编程方式在组合框中选择正确的项目? (抱歉重复评论,但我无法编辑第一个)
  • 一点额外信息:DataGridviewCombobox 中的项目是文本,datarow (dr[6]) 中的列是整数!
  • 试试 Convert.ToInt32(dr[6].ToString())
【解决方案2】:

选择正确的行?您的意思是从下拉列表中选择以查看数据网格中的行?

 int index = dropdown.SelectedIndex();

 for(int count = 0; count < dgvEenheden.Rows.Count; count ++)
{
   if (dgvEenheden.Rows[count].Cells["<enter col name here>"].Value.ToString().equals(dropdown.Items[index].Text))
{
    dgvEenheden.Rows[count].Selected = true; //to select the Row
    dgvEenheden.Rows[count].Cells[<Cell Number>].Selected = true; //to select the specific Cell

}
}

【讨论】:

    猜你喜欢
    • 2014-03-02
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多