DataGridView使用
admin
2023-08-02 15:55:04
0

这段时间需要使用DataGridView,故来总结一下
首先需要做的是连接数据库,获得数据

        string str_con = @\"Data Source=.;Integrated Security=sspi;Initial Catalog=testDB;\";
        string sql = \"select * from Person\";
        SqlConnection conn = new SqlConnection(str_con);
        conn.Open();
        SqlCommand comm = new SqlCommand(sql, conn);
        SqlDataAdapter da = new SqlDataAdapter(comm);
        DataSet ds = new DataSet();
        da.Fill(ds, \"Person\");

        dataGridView1.DataSource = ds;
        dataGridView1.DataMember = \"Person\";
        conn.Close();

这边就不多说了,我的项目里是从类里取得数据

dataGridView1.DataSource = 类名;

(1)修改行头和宽度

        dataGridView1.Columns[0].HeaderText = \"类别\";
        dataGridView1.Columns[1].HeaderText = \"开始时间\";
        dataGridView1.Columns[2].HeaderText = \"结束时间\";
        dataGridView1.Columns[0].Width = 80;
        dataGridView1.Columns[1].Width = 150;
        dataGridView1.Columns[2].Width = 150;

(2)添加CheckBox选择框

        DataGridViewCheckBoxColumn column1 = new DataGridViewCheckBoxColumn();
        {
            column1.HeaderText = \"选择\";
            column1.Name = \"check1\";
            column1.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
            column1.FlatStyle = FlatStyle.Standard;
            //显示选择框的三种状态
            column1.ThreeState = true;
        }
        dataGridView1.Columns.Insert(0, column1);//插入到最前面

这里说明DataGridView可以添加6中按钮控件,除了CheckBox还有Button、TextBox、Image、Link和ComboBox,用法都是一样的

(3)隐藏新增行和列头

        dataGridView1.RowHeadersVisible = false;
        dataGridView1.AllowUserToAddRows = false;

(4)设置字体居中显示

        dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

(5)设定包括Header和所有单元格的列宽和行高自动调整

        GV_Visit.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
        GV_Visit.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

(6)设置行首和左上角的文字

        dataGridView1.Rows[0].HeaderCell.Value = \"第1行\";
        /dataGridView1.TopLeftHeaderCell.Value = \"左上角\";

(7)取得选定的行、列、单元格

        //选定的单元格
        foreach (DataGridViewCell c in dataGridView1.SelectedCells)
        {
            string cr = string.Format(\"{0},{1}\", c.ColumnIndex, c.RowIndex);
            listBox1.Items.Add(\"选定的单元格位置是:\" + cr);
        }
        //选定的行/列
        foreach (DataGridViewRow c in dataGridView1.SelectedRows)
        {
            listBox1.Items.Add(\"选定的行是:\" + c.Index);
        }
        foreach (DataGridViewColumn c in dataGridView1.SelectedColumns)
        {
            listBox1.Items.Add(\"选定的列是:\" + c.Index);
        }

(8)删除行、列

        //删除指定行
        dataGridView1.Columns.RemoveAt(0);
        dataGridView1.Columns.Remove(\"Name\");
        //删除指定列
        dataGridView1.Rows.RemoveAt(0);
        //删除多行
        foreach (DataGridViewRow r in dataGridView1.SelectedRows)
        {
            if (r.IsNewRow == false)
            {
                dataGridView1.Rows.Remove(r);
            }
        }

(9)因为我的项目里新增了CheckBox选择框,我想实现单选需要在CellContentClick事件中说明

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        int count = Convert.ToInt16(dataGridView1.Rows.Count.ToString());
        for (int i = 0; i < count; i++)
        {
            DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells[\"check1\"];
            Boolean flag = Convert.ToBoolean(checkCell.Value);
            if (flag == true)     //查找被选择的数据行 
            {
                checkCell.Value = false;
            }
            else
            {
                continue;
            }
        }
    }

(10)获取到选择的行的数据

        string IData = \"\";
        int count = Convert.ToInt32(dataGridView1.Rows.Count.ToString());//获取到总行数
        for (int i = 0; i < count; i++)
        {
            //如果DataGridView是可编辑的,将数据提交,否则处于编辑状态的行无法取到 
            dataGridView1.EndEdit();
            //获取到选择的行数
            DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)GV_Visit.Rows[i].Cells[\"check1\"];
            Boolean flag = Convert.ToBoolean(checkCell.Value);
            if (flag == true)//查找被选择的数据行 
            {
                for (int j = 1; j < dataGridView1.ColumnCount; j++)
                {
                    //从 DataGridView中获取某行某列的数据项
                    string data = dataGridView1.Rows[i].Cells[j].Value.ToString().Trim();
                    IData += data + \",\";
                }
                //如果只需要取某一列的值,那就不需要遍历列了
                //string data = dataGridView1.Rows[i].Cells[列数].Value.ToString().Trim();
            }
        }
        if (!string.IsNullOrEmpty(IData))
        {
            MessageBox.Show(IData.TrimEnd(\',\'));
        }

(11)获得列名为“**”的列

因为在项目中,经常有关于性别或其他的,在数据库中储存为0/1,在页面显示需要表示为男/女或真/假之类的

        int num= dataGridView1.Columns[\"Gender\"].Index;
        //获得列名叫Gender的列的索引
        //通过遍历所有的行,值为0则是男反之则为女
        for (int i = 0; i < dataGridView1.RowCount; i++)
        {
            if (dataGridView1.Rows[i].Cells[num].Value.ToString().Trim() == \"0\")
            {
                dataGridView1.Rows[i].Cells[num].Value = \"男\";
            }
            else
            {
                dataGridView1.Rows[i].Cells[num].Value = \"女\";
            }
        }

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...