首页 > 解决方案 > 当没有数据集可用时,DataGridView 显示一个空行

问题描述

DataGridView当没有可用的数据集时,我的总是显示一个空行。数据通过绑定源来自 Entity Framework 6 数据库。我的期望是,当没有可用的数据集时,DataGridView只显示行标题,而没有其他内容。

dgv 显示空行

来自InitializeCompnent()

    this.dgvWarnings.AllowUserToAddRows = false;
    this.dgvWarnings.AllowUserToDeleteRows = false;
    this.dgvWarnings.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    this.dgvWarnings.Location = new System.Drawing.Point(12, 384);
    this.dgvWarnings.MultiSelect = false;
    this.dgvWarnings.Name = "dgvWarnings";
    this.dgvWarnings.ReadOnly = true;
    this.dgvWarnings.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
    this.dgvWarnings.Size = new System.Drawing.Size(817, 95);
    this.dgvWarnings.TabIndex = 115;
    this.dgvWarnings.DoubleClick += new System.EventHandler(this.dgvWarnings_DoubleClick);

从主类:

    private void Startseite_Load(object sender, EventArgs e)
    {
        _context = new SqlContext();

        _context.Configuration.ProxyCreationEnabled = false;
        _context.ProgramWarnings.Load();
        bindProgramWarningList.DataSource = _context.ProgramWarnings.Local.ToBindingList().Where(t => t.Acknowledged == false);

        dgvWarnings.AutoGenerateColumns = false;
        dgvWarnings.AutoSize = true;

        dgvWarnings.DataSource = bindProgramWarningList;

        DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "WarningMessage";
        column.Name = "Warnung";
        dgvWarnings.Columns.Add(column);

        column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "WarningTime";
        column.Name = "Datum/Uhrzeit";
        dgvWarnings.Columns.Add(column);

一些事件:

private void dgvWarnings_DoubleClick(object sender, EventArgs e)
    {
        if (dgvWarnings.SelectedRows.Count == 1)
        {

            ((ProgramWarning)dgvWarnings.SelectedRows[0].DataBoundItem).Acknowledged = true;
            _context.SaveChanges();
            bindProgramWarningList.DataSource = _context.ProgramWarnings.Local.ToBindingList().Where(t => t.Acknowledged == false);
            bindProgramWarningList.ResetBindings(true);


        }
    }

标签: c#datagridview

解决方案


初始化网格列后尝试移动以下说明:

    _context = new SqlContext();

    _context.Configuration.ProxyCreationEnabled = false;
    _context.ProgramWarnings.Load();
    bindProgramWarningList.DataSource = 
    _context.ProgramWarnings.Local.ToBindingList().Where(t => t.Acknowledged == false);

还要验证您的网格在完全初始化后是否开始为空,以及是否是此命令添加了您的幽灵线(只需备注 bindProgramWarningList.DataSource =...)

干杯

ps:看来你在我发帖时编辑了。如果它是数据源,请尝试将结果加载到新列表并将其用作数据源。在最坏的情况下,您甚至可以检查是否有空行并将其从您的视图列表中删除...


推荐阅读