【问题标题】:Cannot be programmatically added to the DataGridView's rows collection when the control is data-bound当控件绑定数据时,无法以编程方式将其添加到 DataGridView 的行集合
【发布时间】:2021-06-30 08:48:04
【问题描述】:

当我尝试将新行添加到我的 DataGrideView 时遇到此问题:

public List<PrefModel> GetPerfLog()
{
    try
    {
        List<PerfModelList> objects = File.ReadAllLines($"D:\\PrefLog.json")
        .Select(line => JsonConvert.DeserializeObject<PerfModelList>(line))
        .ToList();
        var perf = from PerfModelList perflist in objects select perflist.FlogDetail;
        
        
        return perf.ToList();
    }
    catch (Exception ex)
    {
        throw new Exception(ex.Message);
    }
}

private void Form1_Load(object sender, EventArgs e)
{


  
    dgvPerformance.DataSource = _readingLogFiles.GetPerfLog();
    
    
}

private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e)
{
    if (e.ChangeType != WatcherChangeTypes.Changed)
    {
        return;
    }

    dgvPerformance.Rows.Add(_readingLogFiles.GetlastPerfLog());
}

【问题讨论】:

  • 您的PropertyGridAutoGenerateColumns 属性的值是多少?您需要将其设置为 false 才能手动管理列。另请注意,您还需要手动将每一列绑定到数据源的属性。
  • 您应该将该行添加到数据源
  • 我尝试这种方式但不起作用(Sam 问题):- DataGridViewRow row = (DataGridViewRow)dgvPerformance.Rows[length].Clone(); row.Cells[0].Value = pref.CustomerId; row.Cells[1].Value = pref.CustomerName; dgvPerformance.DataSource= 行; @Serg

标签: c# .net datagridview windows-forms-designer


【解决方案1】:

添加到数据源,而不是网格

private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e)
{
    if (e.ChangeType != WatcherChangeTypes.Changed)
    {
        return;
    }

    var x =  dgvperformance.DataSource as List<PrefLog>;      
    x.Add(_readingLogFiles.GetlastPerfLog());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2014-09-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多