C# DataGridView-动态更新值

C# DataGridView-动态更新值,c#,datagridview,C#,Datagridview,我想在按下行标题时动态更新DataGridView单元格的值 该值会更新,但视图不会刷新 void OnRowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { var databaseRecordId = e.RowIndex; dataGridView1.Rows[e.RowIndex].Cells[0].Value = false; } 请提供简单的解决方案?您能在更新后添加以下内容吗:

我想在按下行标题时动态更新DataGridView单元格的值

该值会更新,但视图不会刷新

void OnRowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    var databaseRecordId = e.RowIndex;
    dataGridView1.Rows[e.RowIndex].Cells[0].Value = false;
}

请提供简单的解决方案?

您能在更新后添加以下内容吗:

dataGridView1.refresh()

只是想看看它是否有帮助,否则我还有其他一些想法

dataGridView1[0, e.RowIndex].Value = false;
dataGridView1.EndEdit();
或:

你的代码对我有用。 我尝试了一个数据源,它是数据表或对象列表

您的数据源的类型是什么

恐怕您正在使用匿名类型作为数据源,请记住它是只读的,因此无法更新

您可以使用dataTable,或者我可以为您提供一个将匿名类型转换为dataTable的方法

这不起作用:

            List<MyClass> myList = new List<MyClass>();
            myList.Add(new MyClass() { URL = "A", Path = "1" });
            myList.Add(new MyClass() { URL = "B", Path = "2" });
            myList.Add(new MyClass() { URL = "C", Path = "3" });
            myList.Add(new MyClass() { URL = "D", Path = "4" });
            myList.Add(new MyClass() { URL = "E", Path = "5" });

dataGridView1.DataSource = (from a in myList select new
                                        {
                                            URL = a.URL,
                                            Path = a.Path
                                        }).ToList();

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
            var databaseRecordId = e.RowIndex;
            dataGridView1.Rows[e.RowIndex].Cells[0].Value = 555;
}

我希望这会有所帮助。

您的代码是正确的,并且可以正常工作

private void dgvNews_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
        var databaseRecordId = e.RowIndex;
        dgvNews.Rows[e.RowIndex].Cells[0].Value = "AAAAAA";
}

问题只在于布尔类型。对不起,我没有理解你的意思。你的意思是可以更新匿名类型数据源中的字符串类型吗?尝试使用带有布尔列的DataTable,可以看到结果。我刚刚尝试过,效果很好。也不需要刷新()或刷新编辑()。将此
x.Columns.Add(“Boolean”)
添加到
x.Columns.Add(“Boolean”,typeof(bool))
并重试。问题仅出现在CheckBoxColumn中。
DataTable x = new DataTable();
            x.Columns.Add("URL");
            x.Columns.Add("PAth");
            x.Columns.Add("Boolean");

            x.Rows.Add("A", "1", true);
        x.Rows.Add("B", "1" , false);
        x.Rows.Add("C", "1" , true);
        x.Rows.Add("D", "1" , true);
        x.Rows.Add("E", "1", true);
        x.Rows.Add("F", "1", true);
        x.Rows.Add("G", "1",true);

dataGridView1.DataSource = x;


    private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        var databaseRecordId = e.RowIndex;
        dataGridView1.Rows[e.RowIndex].Cells[2].Value = false;
    }
private void dgvNews_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
        var databaseRecordId = e.RowIndex;
        dgvNews.Rows[e.RowIndex].Cells[0].Value = "AAAAAA";
}