c# - 绑定(bind)到 BindingList 的 DataGridView 显示太多列

标签 c# winforms data-binding datagridview

我有一个类有两个公共(public)属性,名称和文本。我想将 DataGridView 绑定(bind)到这些对象的列表,所以我将它们加载到 BindingList<> 中。我只想在 DataGridView 中显示 Name 属性,但我得到了两列。我做错了什么?

private void fileOpenTextBox1_FileSelected(object sender, string e)
{
    m_definitions = new BindingList<TagSimDefinition>(TagSimDefinition.Read(e));

    dgvTagNames.AutoGenerateColumns = false;
    dgvTagNames.Columns.Clear();
    DataGridViewCell cell = new DataGridViewTextBoxCell();
    DataGridViewTextBoxColumn colTagName = new DataGridViewTextBoxColumn()
    {
        CellTemplate = cell,
        Name = "colTagName",
        HeaderText = "Tag Name",
        DataPropertyName = "Name"
    };

    dgvTagNames.Columns.Add(colTagName);
    dgvTagNames.DataSource = m_definitions;
}

最佳答案

@Robert 你正在设置,

dgvTagNames.DataSource = m_definitions;

为此它显示了两列。如果您想获得一列,请像这样使用它,

m_definitions = new BindingList<TagSimDefinition>(TagSimDefinition.Read(e));

dgvTagNames.AutoGenerateColumns = false;
dgvTagNames.Columns.Clear();
dgvTagNames.ColumnCount = 1;
dgvTagNames.Columns[0].Name = "colTagName";
dgvTagNames.Columns[0].DataPropertyName = "colTagName";
dgvTagNames.DataSource = m_definitions;

另一种解决方案:

 m_definitions = new BindingList<TagSimDefinition>(TagSimDefinition.Read(e));
 dgvTagNames.Columns.Clear();
 DataGridViewCell cell = new DataGridViewTextBoxCell();
 DataGridViewTextBoxColumn colTagName = new DataGridViewTextBoxColumn()
 {
    CellTemplate = cell,
    Name = "colTagName",
    HeaderText = "Tag Name",
    DataPropertyName = "Name"
 };

dgvTagNames.Columns.Add(colTagName);

dgvRegion.Rows.Clear();
int index = 0;
foreach (var dparam in m_definitions)
{
    dgvTagNames.Rows.Add();
    dgvTagNames["colTagName", index].Value = dparam.<Property1>;                                           
    dgvTagNames.Rows[index].Tag = dparam;
    index++;
}

关于c# - 绑定(bind)到 BindingList 的 DataGridView 显示太多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319610/

相关文章:

c# - 将 system.reflection 替换为 "this"

c# - 将匿名类型添加到 Enumerable<TSource>

c# - 使用 Entity Framework 恢复和备份

angular - 尝试绑定(bind)到 dx-date-box 时,类型 'string | number | Date' 无法分配给类型 'Date'

c# - 在 EF 的延迟加载上使用自定义 where 子句

c# - 遍历 XML

c# winforms 绑定(bind) ListBox SelectedItem 的属性

C# Winforms 和命令行批处理文件

c# - Xamarin.Forms 绑定(bind)有效,但文本未显示

android - Kotlin-DataBinding-错误 : Check your module classpath for missing or conflicting dependencies