如何强制刷新DataGridView的内容? [英] How to force refresh the DataGridView's content?

查看:351
本文介绍了如何强制刷新DataGridView的内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想打一个有序的datagridview输入。下面的代码片段并不十分剪;即使我把grd.Refresh,在DataGridView不显示其更新的值。如果我按向下箭头键止跌回升,网格是令人耳目一新。 ?有没有其他办法可以强制刷新datagridview的内容

 使用系统; 
使用System.Collections.Generic;
使用System.ComponentModel;
使用System.Data这;
使用System.Drawing中;
使用System.Text;使用System.Windows.Forms的
;

命名空间TestSortedInput
{
公共部分Form1类:表格
{
的DataTable _dt =新的DataTable();

公共Form1中()
{
的InitializeComponent();

grd.AllowUserToAddRows = FALSE;

_dt.Columns.Add(排序的typeof(INT));
_dt.Columns.Add(产品,typeof运算(字符串));

_dt.DefaultView.Sort =排序;

grd.DataSource = _dt;
}

私人无效dataGridView1_KeyUp(对象发件人,发送KeyEventArgs E)
{
如果(e.KeyCode == Keys.Insert)
{
如果(e.Modifiers == 0)
{
变种R = _dt.NewRow(); $ B $; B R [排序] = _dt.DefaultView.Count + 1; $ B $; B R [产品] =;

_dt.Rows.Add(R);
}
,否则如果(e.Alt)
{
VAR DRV = this.BindingContext [_dt] .Current为DataRowView的;

INT排序=(int)的DRV [排序];

的for(int i = _dt.DefaultView.Count - 1; I> =(int)的DRV [排序] - 1; --i)
{
_dt.DefaultView [I] [排序] =(int)的_dt.DefaultView [I] [排序] + 1;
}

变种R = _dt.NewRow(); $ B $; B R [排序] =排序;

_dt.Rows.Add(R);

grd.Refresh();
}
}
} //无效
}
}


解决方案

替换

  grd.Refresh(); 



  drv.EndEdit(); 



选定行是在编辑模式下,你必须结束它的排序发生。


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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆