dataGridView笔记

最近用dataGridView比较多,先把代码备份在这里,有时间系统总结一下

 

using FindId.DAL;
using FindId.Model;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FindId
{
    
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            //bin = new delegateBin(DataBin);
        }
        public static bool IsClosed = false;
        private void Form2_Load(object sender, EventArgs e)
        {
            CreateView();            
        }
        public void Test()
        {
            //bin = new delegateBin(DataBin);
        }
        public static delegateBin bin;
        public void DataBin()
        {
            DAL_Goods dal = new DAL_Goods();
            string findGroupID = tbFindGroupID.Text.Trim();            
            List<Model_Goods> dlist = (List<Model_Goods>)dal.ListWhere(findGroupID);
            dataGridView1.Refresh();
            dataGridView1.DataSource = dlist;            
        }

        private void CreateView()
        {
            dataGridView1.AutoGenerateColumns = false;
            DataGridViewLinkColumn linkID = new DataGridViewLinkColumn();
            linkID.Name = "linkID";
            linkID.HeaderText = "id";
            linkID.Width = 1;
            linkID.DataPropertyName = "ID";
            dataGridView1.Columns.Add(linkID);

            //DataGridViewTextBoxColumn dgtbGroupID = new DataGridViewTextBoxColumn();
            //dgtbGroupID.DataPropertyName = "GroupID";
            //dgtbGroupID.Name = "tbGroupID";
            //dgtbGroupID.HeaderText = "产品ID";
            //dataGridView1.Columns.Add(dgtbGroupID);


            DataGridViewTextBoxColumn dgtbGoodsTitle = new DataGridViewTextBoxColumn();
            dgtbGoodsTitle.DataPropertyName = "GoodsTitle";
            dgtbGoodsTitle.Name = "dgtbGoodsTitle";
            dgtbGoodsTitle.HeaderText = "产品名称";
            dgtbGoodsTitle.Width = 200;
            dataGridView1.Columns.Add(dgtbGoodsTitle);

            DataGridViewTextBoxColumn dgtbAttributeTitle = new DataGridViewTextBoxColumn();
            dgtbAttributeTitle.DataPropertyName = "AttributeTitle";
            //dgtbAttributeTitle.CellTemplate
            dgtbAttributeTitle.Name = "dgtbAttributeTitle";
            dgtbAttributeTitle.HeaderText = "属性名称";
            dataGridView1.Columns.Add(dgtbAttributeTitle);

            DataGridViewTextBoxColumn dgtbAttribute = new DataGridViewTextBoxColumn();
            dgtbAttribute.DataPropertyName = "Attribute";
            dgtbAttribute.Name = "dgtbAttribute";
            dgtbAttribute.HeaderText = "内容";
            dataGridView1.Columns.Add(dgtbAttribute);


            DataGridViewLinkColumn linkDelete = new DataGridViewLinkColumn();
            linkDelete.Text = "删除";
            linkDelete.Name = "linkDelete";
            linkDelete.HeaderText = "删除";
            linkDelete.Width = 40;
            linkDelete.UseColumnTextForLinkValue = true;
            dataGridView1.Columns.Add(linkDelete);
        }


        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            var Column = dataGridView1.Columns[e.ColumnIndex];
            if (Column.Name == "linkDelete")
            {
                var cellId = dataGridView1.Rows[e.RowIndex].Cells[0];
                string temp = cellId.EditedFormattedValue.ToString();
                int id;
                int.TryParse(temp, out id);
                if (MessageBox.Show("确认删除?", "此删除不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    new DAL_Goods().Delete(new Model_Goods() { ID = id });                   
                    DataBin();
                }   
            }
            else
            {
                //var cellSelected = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                var cellSelected = dataGridView1.Rows[e.RowIndex].Cells[3];
                string txt = cellSelected.EditedFormattedValue.ToString();
                MessageBox.Show(txt);
            }
        }
        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //更新
            var cellSelected = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
            string txt = cellSelected.EditedFormattedValue.ToString();

            var cellId = dataGridView1.Rows[e.RowIndex].Cells[0];
            string temp = cellId.EditedFormattedValue.ToString();
            int id;
            int.TryParse(temp, out id);

            DAL_Goods dal = new DAL_Goods();
            Model_Goods model = new Model_Goods();

            var ColumnsSelected = dataGridView1.Columns[e.ColumnIndex];
            if (ColumnsSelected.Name == "dgtbGoodsTitle")
            {
                model.GoodsTitle = txt;
            }
            else if (ColumnsSelected.Name == "dgtbAttributeTitle")
            {
                model.AttributeTitle = txt;
            }
            else if (ColumnsSelected.Name == "dgtbAttribute")
            {
                model.Attribute = txt;
            }
            model.ID = id;
            bool b = dal.UpdateAutoCreateSqlText(model);
            //MessageBox.Show(string.Format("vale = {0}  id = {1} is{2}",txt,id,b));
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            Model_Goods model = new Model_Goods();
            model.GroupID = tbGroupID.Text.Trim();
            model.GoodsTitle = tbGoodsTitle.Text.Trim();
            model.AttributeTitle = tbAttributeTitle.Text.Trim();
            model.Attribute = tbAttribute.Text.Trim();
            DAL_Goods dal = new DAL_Goods();
            dal.AddNew(model);
            DataBin();

        }
        private void btnFindGroupID_Click(object sender, EventArgs e)
        {
            DataBin();
        }











       //======================================以下是试验代码 上边的是整理好的可用代码==========================

        private void NewMethod1()
        {
            //DataGridView控件用法(二):为每行记录最后加“编辑”-“删除”按钮列 - lllljz的专栏 - CSDN博客  https://blog.csdn.net/lllljz/article/details/7718201


            ////为每行数据增加编辑列。
            dataGridView1.AutoGenerateColumns = false; // //设定列不能自动作成
            DataGridViewLinkColumn dlink = new DataGridViewLinkColumn();////创建一个DataGridViewLinkColumn列
            dlink.Text = "编辑";//添加的这列的显示文字,即每行最后一列显示的文字。
            dlink.Name = "linkEdit";
            dlink.HeaderText = "编辑";//列的标题
            dlink.DataPropertyName = "ID";
           
            //dlink.UseColumnTextForLinkValue = true;//上面设置的dlink.Text文字在列中显示
            dataGridView1.Columns.Add(dlink);//将创建的列添加到dataGridView1中


            ////同上方法为每条记录创建“删除”超链接
            DataGridViewLinkColumn dlink2 = new DataGridViewLinkColumn();
            dlink2.Text = "删除";
            dlink2.Name = "linkDelete";
            dlink2.HeaderText = "删除";
            dlink2.UseColumnTextForLinkValue = true; 
            dataGridView1.Columns.Add(dlink2);


            ////同上方法为每条记录创建“查看”超链接
            DataGridViewButtonColumn btn1 = new DataGridViewButtonColumn();
            btn1.Text = "查看";
            btn1.Name = "linkView";
            btn1.HeaderText = "查看";
            btn1.UseColumnTextForButtonValue = true;
            btn1.Width = 66;
            dataGridView1.Columns.Add(btn1);

            //DataGridViewComboBoxColumn dCombo = new DataGridViewComboBoxColumn();

            //dCombo.Items.Add("编号");
            //dCombo.Items.Add("产品ID");
            //dCombo.Items.Add("属性名");
            //dCombo.Items.Add("属性");
            //dCombo.Name = "dCombo";
            ////dcombo.DisplayIndex = 1;	//该列显示的位置
            ////dCombo.HeaderText = "角色";
            //dCombo.DataPropertyName = "GroupID";//绑定的列
            //dCombo.DataSource = dlist;
            //dCombo.DataPropertyName = "GroupID";//绑定的列

            DataGridViewTextBoxColumn tb1 = new DataGridViewTextBoxColumn();
            tb1.DataPropertyName = "GroupID";
            tb1.Name = "产品ID";
            dataGridView1.Columns.Add(tb1);


            DataGridViewTextBoxColumn tb2 = new DataGridViewTextBoxColumn();
            tb2.DataPropertyName = "GoodsTitle";
            tb2.Name = "产品名称";
            tb2.Width = 500;

            dataGridView1.Columns.Add(tb2);

            //绑定数据库的值时使用以下属性
            DAL_Goods dal = new DAL_Goods();
            List<Model_Goods> dlist = (List<Model_Goods>)dal.ListWhere("124454445744");

            //dataGridView1.
            dataGridView1.DataSource = dlist;
        }

        private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            //C# DataGridView添加右键菜单等技巧 --转 - 晔 - 博客园  https://www.cnblogs.com/liye/archive/2010/09/29/1838709.html
            if (e.Button == MouseButtons.Right)
            {
                if (e.RowIndex >= 0)
                {
                    //若行已是选中状态就不再进行设置
                    if (dataGridView1.Rows[e.RowIndex].Selected == false)
                    {
                        dataGridView1.ClearSelection();
                        dataGridView1.Rows[e.RowIndex].Selected = true;
                    }
                    //只选中一行时设置活动单元格
                    if (dataGridView1.SelectedRows.Count == 1)
                    {
                        dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    }
                    //弹出操作菜单
                    contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
                }
                var cellId = dataGridView1.Rows[e.RowIndex].Cells[0];
                string temp = cellId.EditedFormattedValue.ToString();
               
                int.TryParse(temp, out id);
                //MessageBox.Show(id.ToString());

            }
        }
        int id;
        private void 编辑ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //MessageBox.Show(id.ToString());
            FormEdit fedit = new FormEdit(id);
            fedit.ShowDialog();
            
        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确认删除?", "此删除不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                new DAL_Goods().Delete(new Model_Goods() { ID = id });
                DataBin();
            }   
        }

        private void btnAddNew_Click(object sender, EventArgs e)
        {
            FormAddNew frAdd = new FormAddNew();
            frAdd.ShowDialog();
        }



   





    }
}

  

posted @ 2019-03-09 21:28  钢的锅  阅读(283)  评论(0编辑  收藏  举报