我想在按下行标题时动态更新DataGridView单元格的值。
值会更新,但视图不会刷新。
void OnRowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
var databaseRecordId = e.RowIndex;
dataGridView1.Rows[e.RowIndex].Cells[0].Value = false;
}
简单的解决方案好吗?
答案 0 :(得分:1)
你可以在更新后把它放在:
dataGridView1.refresh();
只是为了看看它是否有帮助,否则我还有其他一些想法。
答案 1 :(得分:1)
您的代码是正确无误的。
private void dgvNews_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
var databaseRecordId = e.RowIndex;
dgvNews.Rows[e.RowIndex].Cells[0].Value = "AAAAAA";
}
答案 2 :(得分:0)
dataGridView1[0, e.RowIndex].Value = false;
dataGridView1.EndEdit();
或:
dataGridView1[0, e.RowIndex].Value = false;
dataGridView1.RefreshEdit();
答案 3 :(得分:0)
您的代码适合我。 我尝试了一个数据源,它是一个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;
}
虽然这有效(使用布尔列编辑)
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;
}
我希望这会有所帮助。