如何强制刷新DataGridView的内容?

5

我想创建一个带排序功能的DataGridView输入。下面的代码片段还不够完美,即使我使用了grd.Refresh方法,DataGridView也没有显示更新后的值。如果我按箭头向下并再次向上,网格就会刷新。有没有其他办法可以强制刷新DataGridView的内容?

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
    }
}
2个回答

10
替换
grd.Refresh(); 

通过

drv.EndEdit();

所选行处于编辑模式,必须结束编辑以进行排序。


这解决了我的问题。哇,我真的忽略了那个(drv.EndEdit),我猜我习惯于不调用.EndEdit,在我的子类化表单中它是自动化的。非常感谢 ^_^ - Hao

1
你尝试过使用BindingSource作为数据表的源,然后调用BindingSource的ResetBindings方法吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接