【问题标题】:Datagridview column index changing when binding to a datatable绑定到数据表时 Datagridview 列索引发生变化
【发布时间】:2012-05-16 06:41:17
【问题描述】:

我有两个 datragridview 组合框列,以及一个 datagridview 中的两个文本框列。每个组合框列都绑定到单独的绑定源。

列名称为 sl_no、col_empname、col_empworktype、Col_Hours 等。 displaymember、datapropertyname、valuemember 和 for comboxcolumn 是

col_empname:-emp_name,emp_id,emp_id

col_empworktype:-worktypename,worktypeid,worktypeid

我的问题是

  1. 当我将数据绑定到 gridview 时,它会显示一个额外的列 emp_id(image 1)
  2. 当我选择组合框列时,它的列索引会改变
  3. 选择组合框列后,它显示错误 datagridview 'Datagridviewcombobox 值无效!'

在我的表单加载中我指定了数据属性名

Dim employeecolumn As DataGridViewComboBoxColumn = CType(grdWorkStatus.Columns("Col_EmpName"), DataGridViewComboBoxColumn) 
employeecolumn.DisplayMember = "emp_name" 
employeecolumn.ValueMember = "emp_Id" 
employeecolumn.DataPropertyName = "emp_Id" 
employeecolumn.DataSource = EmployeeSource 

只有当我将数据库中的数据绑定到 grdiview(更新 grdiview 数据)时,才会出现所有这些问题。否则我可以保存。一切正常。

提前致谢。

【问题讨论】:

    标签: vb.net visual-studio datagridview


    【解决方案1】:

    当您将数据表绑定到DataGridView 时,它将绑定数据表中的所有列,因此如果您的数据表中有emp_id,那么它将显示在DataGridView 上。

    您可能需要在 dataGridView 中创建一个emp_id 列,将DataPropertyName 用于emp_id 的列,然后使id 列不可见。

    【讨论】:

    • Nick.emp_id 是 col_empname 的数据属性名称。
    • 那么您是否为col_empname 创建了一个列并使其不可见?
    • 尼克。感谢您的快速回复。
    • 将员工列调暗为 DataGridViewComboBoxColumn = CType(grdWorkStatus.Columns("Col_EmpName"), DataGridViewComboBoxColumn) employeecolumn.DisplayMember = "emp_name" employeecolumn.ValueMember = "emp_Id" employeecolumn.DataPropertyName = "emp_Id" employeecolumn.DataSource = 员工来源
    • @Shyams 您最后的评论是否确认尼克帮助解决了您的问题?然后请给他投票并将他标记为答案,或者在解释完整解决方案的地方发布新答案。如果您的评论是新信息并且问题仍然存在,请将代码放入您的问题中并添加有关该问题的新信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多