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绑定数据源的几种方式

  • 相关阅读:
    SVN服务器搭建和使用
    oracle 存储过程
    PLSQL函数
    PL/SQL --> 游标
    PL SQL 游标学习
    PLSQL存储过程
    利用jqueryRotare实现抽奖转盘
    NSString 与NSMutableString的区别
    第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法
    第8章 应用协议 图解TCP/IP 详解
  • 原文地址:https://www.cnblogs.com/code1992/p/10601206.html
Copyright © 2011-2022 走看看