如何强制刷新DataGridView的内容? [英] How to force refresh the DataGridView's content?
本文介绍了如何强制刷新DataGridView的内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
using System;
使用System.Collections.Generic;
使用System.ComponentModel;
使用System.Data;
使用System.Drawing;
使用System.Text;
使用System.Windows.Forms;
命名空间TestSortedInput
{
public partial class Form1:Form
{
DataTable _dt = new DataTable();
public Form1()
{
InitializeComponent();
grd.AllowUserToAddRows = false;
_dt.Columns.Add(sort,typeof(int));
_dt.Columns.Add(product,typeof(string));
_dt.DefaultView.Sort =sort;
grd.DataSource = _dt;
}
private void dataGridView1_KeyUp(object sender,KeyEventArgs e)
{
if(e.KeyCode == Keys.Insert)
{
if(e.Modifiers == 0)
{
var r = _dt.NewRow();
r [sort] = _dt.DefaultView.Count + 1;
r [product] =;
_dt.Rows.Add(r);
}
else if(e.Alt)
{
var drv = this.BindingContext [_dt] .Current as DataRowView;
int sort =(int)drv [sort]; (int i = _dt.DefaultView.Count - 1; i> =(int)drv [sort] - 1; --i)
_dt.DefaultView [i] [sort] =(int)_dt.DefaultView [i] [sort] + 1;
}
var r = _dt.NewRow();
r [sort] = sort;
_dt.Rows.Add(r);
grd.Refresh();
}
}
} // void
}
}
解决方案
替换
grd.Refresh()
by
drv.EndEdit();
所选行处于编辑模式,您必须结束排序才能进行。 / p>
I want to make a sorted datagridview input. The following code snippet doesn't quite cut it; even if i put a grd.Refresh, the datagridview doesn't show its updated values. If i press arrow down key and go up again, the grid is refreshing. Is there any other way i can force refresh to datagridview's content?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestSortedInput
{
public partial class Form1 : Form
{
DataTable _dt = new DataTable();
public Form1()
{
InitializeComponent();
grd.AllowUserToAddRows = false;
_dt.Columns.Add("sort", typeof(int));
_dt.Columns.Add("product", typeof(string));
_dt.DefaultView.Sort = "sort";
grd.DataSource = _dt;
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Insert)
{
if (e.Modifiers == 0)
{
var r = _dt.NewRow();
r["sort"] = _dt.DefaultView.Count + 1;
r["product"] = "";
_dt.Rows.Add(r);
}
else if (e.Alt)
{
var drv = this.BindingContext[_dt].Current as DataRowView;
int sort = (int)drv["sort"];
for (int i = _dt.DefaultView.Count - 1; i >= (int)drv["sort"] - 1; --i)
{
_dt.DefaultView[i]["sort"] = (int) _dt.DefaultView[i]["sort"] + 1;
}
var r = _dt.NewRow();
r["sort"] = sort;
_dt.Rows.Add(r);
grd.Refresh();
}
}
}//void
}
}
解决方案
replace
grd.Refresh();
by
drv.EndEdit();
the selected row is in edit mode, you have to end it for the sorting to take place.
这篇关于如何强制刷新DataGridView的内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文