关于网友提出的“datagridview 选中行 DataGridview刷新滞后是怎么回事”问题疑问,本网通过在网上对“datagridview 选中行 DataGridview刷新滞后是怎么回事”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:datagridview 选中行 DataGridview刷新滞后是怎么回事描述:
大致程序,主窗口Form1,含有DataGridView显示数据库已有记录,点击添加记录按钮弹出窗口Form2,Form1隐藏,用户在Form2里填写好相关信息,点提交,新记录插入到数据库里,此时关闭Form2,重新显示Form1,并对DataGridView进行刷新,使新加记录显示在DataGridView上。
其中 Form2
public partial class Form2 : Form
{
public Form1 fm;
string connectionString;
OleDbConnection myOleDbConnection;
OleDbCommand mycom;
public Form2()
{
InitializeComponent();
comboBox1.Items.Add("gb2312");
comboBox1.Items.Add("GBK");
comboBox1.Items.Add("utf-8");
comboBox1.SelectedIndex = 0;
connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=1.mdb";
myOleDbConnection = new OleDbConnection(connectionString);
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
fm.Show();
}
private void button1_Click(object sender, EventArgs e)
{
mycom=new OleDbCommand("Insert into sites (sitename,siteurl,sitekey,sitecode) values ('"+textBox1.Text+"','"+textBox2.Text+"','"+comboBox1.SelectedItem.ToString()+"','"+textBox3.Text+"')",myOleDbConnection);
myOleDbConnection.Open();
mycom.ExecuteNonQuery();
fm.RefreshGrid();
this.Close();
}
fm.RefreshGrid();是Form1里负责刷新DataGridView的
public void RefreshGrid()
{
String sqlstr = "select * from sites";
ds = new DataSet(); //不写会保留原来记录再添加一遍,也不能写ds=null
myadapter.Fill(ds, "Table1");
dataGridView1.DataSource = null;
dataGridView1.DataSource = ds.Tables["Table1"];
// dataGridView1.Refresh();
dataGridView1.Columns[0].Visible = false;
dataGridView1.Columns[3].Visible = false;
dataGridView1.Columns[5].Visible = false; //得重新设定,不然会恢复所有行都可见
dataGridView1.Columns[2].Width = 200;
}
但每次都是Form2关闭Form1重新显示后,DataGridView没有刷新,但如果重新点击一次按钮添加,上一次记录会刷新到DataGridView,但当前次信息则没有显示。。
调试执行的办法我试过,反倒正确,正常刷新,非常诡异