【问题标题】:Winforms ComboBoxColumn value not validWinforms ComboBoxColumn 值无效
【发布时间】:2017-02-05 10:47:11
【问题描述】:

我在Winforms 中使用DataGridView 来显示用户信息和他们拥有的角色。 因为我想使用相同的网格来更新我改变的角色 最后一个 DataGridViewTextBoxColumnDataGridViewComboBoxColumn 并设置 valueMember 和 DataSource 属性。

DataGridViewComboBoxColumn的DataSource中我设置了Context.Role。

DataGridView 的DataSource 中,我使用连接设置查询。

数据显示正确,但 Combo 不工作。 我得到了错误

datagridviewcomboboxcell 值无效。

这是我的代码:

var query = from u in context.User
join ur in context.UserRole on u.ID equals r.UserID
join r in context.Role on ur.RoleID.ToString() equals r.ID.ToString() 
select new
{u.ID,
u.Nick,
u.LastLogin, 
Role = ur == null ? String.Empty : r.Name
};

DataGridViewTextBoxColumn ColID = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn ColNick = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn ColLast = new DataGridViewTextBoxColumn();
DataGridViewComboBoxColumn ColRole = new DataGridViewComboBoxColumn();

userDataGridView.Columns.Add(ColID);
userDataGridView.Columns.Add(ColNick);
userDataGridView.Columns.Add(ColLast);
userDataGridView.Columns.Add(ColRole);

ColID.DataPropertyName = "ID";
ColNick.DataPropertyName = "Nick";
ColLast.DataPropertyName = "LastLogin";

ColRole.DataPropertyName = "Role";
ColRole.DataSource = context.Role.ToList();
ColRole.ValueMember = "ID";

userDataGridView.DataSource = query.ToList();

知道我缺少什么吗?

【问题讨论】:

    标签: winforms datagridview datagridviewcombobox


    【解决方案1】:

    首先在设置gridview数据源之前添加未绑定的comboboxColumn给它一个名称,然后设置数据源,然后设置datagridview数据源。

        var query = from u in context.User
    join ur in context.UserRole on u.ID equals r.UserID
    join r in context.Role on ur.RoleID.ToString() equals r.ID.ToString() 
    select new
    {u.ID,
    u.Nick,
    u.LastLogin, 
    Role = ur == null ? String.Empty : r.Name
    };
    
    DataGridViewTextBoxColumn ColID = new DataGridViewTextBoxColumn();
    DataGridViewTextBoxColumn ColNick = new DataGridViewTextBoxColumn();
    DataGridViewTextBoxColumn ColLast = new DataGridViewTextBoxColumn();
    DataGridViewComboBoxColumn ColRole = new DataGridViewComboBoxColumn();
    
    ColID.DataPropertyName = "ID";
    ColNick.DataPropertyName = "Nick";
    ColLast.DataPropertyName = "LastLogin";
    
    ColRole.DataPropertyName = "Role";
    ColRole.DataSource = context.Role.ToList();
    ColRole.ValueMember = "ID";
    
    userDataGridView.Columns.Add(ColID);
    userDataGridView.Columns.Add(ColNick);
    userDataGridView.Columns.Add(ColLast);
    userDataGridView.Columns.Add(ColRole);
    
    userDataGridView.DataSource = query.ToList();
    

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2011-08-12
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      相关资源
      最近更新 更多