首页 > 其他分享 >winform 的 datagridview 动态刷新

winform 的 datagridview 动态刷新

时间:2024-07-20 13:07:28浏览次数:6  
标签:column private datagridview HeaderCell 刷新 var winform dataTable row

要实现在 datagridview 中动态的增删改查,目前能用的比较友好的方案似乎只有 datatable,网上有人说用 BindingList 的,我替你们试过了,无法筛选,坑很多

public partial class Form1 : Form
    {
        private DataTable dataTable = new DataTable();
        private BindingSource bindingSource;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataTable.Columns.Add("Id", typeof(int));
            dataTable.Columns.Add("Name", typeof(string));
            dataTable.Columns.Add("Age", typeof(int));

            for (var i = 0; i < 10; i++)
            {
                var row = dataTable.NewRow();
                row["Id"] = i + 1;
                row["Name"] = "Name" + (i + 1).ToString();
                row["Age"] = i + 20;
                dataTable.Rows.Add(row);
            }

            bindingSource = new BindingSource();
            bindingSource.DataSource = new DataView(dataTable);
            dataGridView1.DataSource = bindingSource;
        }

        private void button1_Click(object sender, EventArgs e)
        {
             try
            {
                // 设置筛选条件
                bindingSource.Filter = "Age > 25";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var i = dataTable.Rows.Count ;
            var row = dataTable.NewRow();
            row["Id"] = i + 1;
            row["Name"] = "Name" + (i + 1).ToString();
            row["Age"] = i + 20;
            dataTable.Rows.Add(row);
        }

        private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            var column = dataGridView1.Columns[e.ColumnIndex];
            if (column.HeaderCell.Tag == null)
            {
                column.HeaderCell.Tag = 1;
                column.HeaderCell.SortGlyphDirection = SortOrder.Ascending;
            }
            else
            {
                column.HeaderCell.Tag = null;
                column.HeaderCell.SortGlyphDirection = SortOrder.Descending;
            }

            // 执行排序
            var direction = column.HeaderCell.SortGlyphDirection == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending;
            dataGridView1.Sort(column, direction);
        }
    }

 

标签:column,private,datagridview,HeaderCell,刷新,var,winform,dataTable,row
From: https://www.cnblogs.com/nanfei/p/18312978

相关文章

  • 解决IDEA自带的Maven 3.9.x无法刷新HTTP Nexus私服的问题
    解决IDEA自带的Maven3.9.x无法刷新HTTPNexus私服的问题前言在日常开发中,我们经常会使用Maven来管理项目的依赖。而Nexus私服则是一个常用的Maven仓库管理工具,可以帮助我们更好地管理和分发项目的依赖。然而,有时候我们会遇到一些棘手的问题,比如在使用IDEA自带的Maven3.9.x时,无......
  • uniapp中uni.navigateBack返回后刷新页面数据的实现
    一、前言在移动端中,数据列表中某项数据点击编辑,进入下一个页面编辑数据,保存后回退到数据列表页,此时需要刷新列表数据,否则显示的列表数据还是旧的。这种场景感觉很多地方都有出现,是需要详细说说方法,也就是uniapp中uni.navigateBack返回后刷新页面数据。1.1、uni.navigateBack ......
  • Wpf和Winform使用devpress控件库导出Excel并调整报表样式
    Wpf和Winform使用devpress控件库导出Excel并调整报表样式背景客户需求经常需要出各种报表,部分客户对报表的样式有要求。包括颜色、字体、分页等等。代码使用Datagridview导出excel调整样式DevExpress.XtraGrid.Views.Grid.GridViewgdv#regionGridView属性设置//行号所......
  • C# WinForm程序全局捕捉异常处理办法
    1.winform捕获全局异常staticclassProgram{///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(){//处理未捕获......
  • C# Winform PropertyGrid中文排序
    在WindowsForms中,PropertyGrid控件默认按照属性名称的字典顺序(通常是ASCII码顺序)来排序显示属性。这在处理中文字符时可能会导致不自然的排序,因为中文字符的编码顺序与中文的实际字典序不同。为了在PropertyGrid中实现中文属性的自然排序,你可以通过以下方式之一来实现:采用制......
  • winform 动态截断或者补全文字宽度
    使用TabControl时,发现它的选项卡宽度会随文字长度变化,我自己做了一个浏览器,发现很难看,于是写了上算法,对文字长度进行填充或截断,效果很不错: 调用代码:using(varg=tabs.CreateGraphics()){tabPage.Text=""+PadAndEllipsis(g,tabs.Font,title,150)+""......
  • Vue.js:如何区分页面关闭和刷新?深入解析与实战
    Vue.js:如何区分页面关闭和刷新?深入解析与实战在开发基于Vue.js的单页应用(SPA)时,我们经常需要处理用户关闭浏览器标签页或刷新页面的情况。虽然这两种操作看似相似,但在某些业务场景中,我们需要对它们进行区分并做出不同的响应。那么,如何在Vue.js中实现这一点呢?本文将带你深入探讨这......
  • DevExpress WinForms自动表单布局,创建高度可定制用户体验(一)
    使用DevExpressWinForms的表单布局组件可以创建高度可定制的应用程序用户体验,从自动安排UI控件到按比例调整大小,DevExpress布局和数据布局控件都可以让您消除与基于像素表单设计相关的麻烦。P.S:DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务......
  • 聊聊springboot项目脱离配置中心,如何实现属性动态刷新
    前言如果大家有开发过微服务项目,那对配置中心应该是耳熟能详了,配置中心有个很有用的能力,就是热更新属性,即不重启服务,就能做到属性的动态变更。而我们今天讲的话题是,怎么样不使用配置中心,也能达到如上的效果如何实现属性的热更新如果我们属性是配置在配置文件中,我们可以通过监听......
  • C# WinForm框架入门与基本控件使用详解
    一.Winform入门​WinForm是WindowsForm的简称,是基于.NETFramework平台的客户端(PC软件)开发技术,一般使用C#编程。在VS2019中,C#WinForm编程需要创建「Windows窗体应用程序」项目。Windows窗体应用程序是C#语言中的一个重要应用,也是C#语言最常见的应用。使用......