zoukankan      html  css  js  c++  java
  • C#控件之DataGridView

    第一种:
    DataSet ds=new DataSet ();
    this.dataGridView1.DataSource=ds.Table[0];

    第二种:
    DataTable dt=new DataTable();
    this.dataGridView1.DataSource=dt;

    第三种:
    DataSet ds=new DataSet ();
    this.dataGridView1.DataSource = ds.Tables["表名"];

    第四种:
    DataSet ds=new DataSet ();
    this.dataGridView1.DataSource = ds;
    this.dataGridView1.DataMember = "表名";

    第五种:
    ArrayList Al = new ArrayList();
    this.dataGridView1.DataSource = Al;

    第六种:
    Dictionary<string, string> dic = new Dictionary<string, string>();
    this.dataGridView1.DataSource = dic;

    第七种:
    DataView dv = new DataView();
    this.dataGridView1.DataSource = dv;

    第八种:
    this.dataGridVi.DataSource = new BindingList<Object>(List<Object>);


    非绑定模式 (ref:http://blog.csdn.net/yudandan10/article/details/9618763)

    所谓的非绑定模式就是dataGridView控件显示的数据不是来自于绑定的数据源,而是可以通过代码手动将数据填充到DataGridView控件中,这样就为DataGridView控件增加了很大的灵活性

    在此我们先来了解一下DataGridView控件有多种类型的列 ,而这些类型都是间接的或直接的继承了DataGridViewColumns()    ,下面是我们能够长用的几种类型

    说明

    DataGridViewTextBoxColumn

    与基于文本的值一起使用,在绑定到数字和字符串类型的值时自动生成

    DataGridViewCheckBoxColumn

    booleancheckState值一起使用,在绑定到这些类型的值时自动生成

    DataGridViewImageColumn

    用于显示图像,在绑定到字节数组、Image对象或Icon对象自动生成

    DataGridViewButtonColumn

    用于在单元格中显示按钮,不会在绑定时自动生成,通常用来做未绑定列

    DataGridViewComboBoxColumn

    用户在单元格中显示下拉列表,不会在绑定时自动生成,通常收到进行数据绑定

    DataGridViewLinkColumn

    用于在单元格中显示超链接,不会在绑定时自动生成,通常需要进行手动绑定数据

     

    代码添加数据

    dataGridView1.Columns.Add("head1", "head1");
    dataGridView1.Columns.Add("head2", "head2");
    dataGridView1.Columns.Add("head3", "head3");
    
    dataGridView1.Rows.Add(new[] { "1", "2", "3" });
    dataGridView1.Rows.Add(new[] { "1", "2", "3" });
    dataGridView1.Rows.Add(new[] { "1", "2", "3" });
    
    //不显示第一列
    dataGridView1.RowHeadersVisible = false;


     

    //隐藏第一列
    dataGridView1.RowHeadersVisible = false;
    
    //固定行高
    dataGridView1.AllowUserToResizeRows = false; 

    //禁止新增行
    dataGridView1.AllowUserToAddRows = false; 

    //修改某一行背景色
    dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.DarkGray; 

    //列标题居中
    dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

    //某一列居中
    dataGridView1.Columns[0].DefaultCellStyle .Alignment = DataGridViewContentAlignment.MiddleCenter;
    dataGridView1.Columns[1].DefaultCellStyle .Alignment = DataGridViewContentAlignment.MiddleCenter;

    DataGridView中的Cell无法触发KeyPress事件,解决方法

    DataGridView在Cell编辑状态响应回车键下的KeyPress/KeyDown/KeyUp事件

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
               
        if (e.Control is DataGridViewTextBoxEditingControl)
        {
            var dgv = (DataGridView)sender;
    
            var tb = (DataGridViewTextBoxEditingControl)e.Control;
    
            //解除事件
            tb.KeyPress -= dataGridView1_KeyPress;
    
            //需要添加事件的列
            if (dgv.CurrentCell.ColumnIndex == 3 )
            {
                //事件追加
                tb.KeyPress += dataGridView1_KeyPress;                   
            }
        }
    }
    
    
    private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar < '0' || e.KeyChar > '9')
        {
            if (e.KeyChar != (char)((int)Keys.Back) && e.KeyChar != (char)((int)Keys.Escape))
            {
                e.Handled = true;
            }
        }
    }

    参考:

    1 【转】DataGridView绑定数据源的几种方式

  • 相关阅读:
    java注解,通过反射解析注解,模仿hibernate,获取sql语句。
    Eclipse/Myeclipse中查看和调试JDK源代码的方法
    TCP为什么会出现 RST
    《浅谈F5健康检查常用的几种方式》—那些你应该知道的知识(二)
    负载均衡服务TCP端口健康检查成功,为什么在后端业务日志中出现网络连接异常信息?
    haproxy的丰富特性简介
    健康检查概述
    firewall防火墙常用操作
    gitlab修改默认端口
    vim脚本判断操作系统
  • 原文地址:https://www.cnblogs.com/code1992/p/10601206.html
Copyright © 2011-2022 走看看