C#使用窗体应用程序的DataGridView控件加载数据库数据(关于数据的增、删、查、改)

一、效果图

二、表格制作

①在窗体程序界面拖拽一个DataGridView控件,并且放置好位置,如下图所示:

②修改该DataGridView控件的名称和对应的窗体适配属性

③表格布局的基础设置

 #region   表格设置

        /// <summary>
        /// 添加表格标题
        /// </summary>
        private void AddTableTitle()
        {
            dtAllInfoData.Columns.Add("Number");
            dtAllInfoData.Columns.Add(ID);
            dtAllInfoData.Columns.Add(ParameterDesc);
            dtAllInfoData.Columns.Add(ParameterAddress);
        }

        /// <summary>
        /// 每一行都包含编辑删除按钮
        /// </summary>
        private void SingleRowOfEditAndDelete()
        {
            dlink1.Text = "修改";
            dlink1.Name = "Eidt";
            dlink1.HeaderText = "操作";
            dlink1.UseColumnTextForLinkValue = true;
            dlink1.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            dlink2.DisplayIndex = 4;
            GridView_EqParameter.Columns.Add(dlink1);
           
            dlink2.Text = "删除";
            dlink2.Name = "Delete";
            dlink2.HeaderText = "操作";
            dlink2.UseColumnTextForLinkValue = true;
            dlink2.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;          
            dlink2.DisplayIndex = 5;
            GridView_EqParameter.Columns.Add(dlink2);

            dbutton.Text = "查看";
            dbutton.Name = "Look";
            dbutton.HeaderText = "操作";
            dbutton.UseColumnTextForButtonValue = true;
            dbutton.AutoSizeMode =
            DataGridViewAutoSizeColumnMode.AllCells;
            dbutton.FlatStyle = FlatStyle.Standard;
            dbutton.CellTemplate.Style.BackColor = Color.Honeydew;
            dbutton.DisplayIndex = 6;
            GridView_EqParameter.Columns.Add(dbutton);

        }

        /// <summary>
        /// 表格标题名称
        /// </summary>
        private void TableTitleName()
        {
            //修改表格标题头显示名称
            GridView_EqParameter.Columns[0].HeaderText = "序号";
            //GridView_EqParameter.Columns[1].HeaderText = "参数编号";
            GridView_EqParameter.Columns[2].HeaderText = "PLC检测参数名称";
            GridView_EqParameter.Columns[3].HeaderText = "PLC检测参数地址";

            //表格样式
            GridView_EqParameter.Columns[0].Width = 30;
            GridView_EqParameter.Columns[1].Width = 30;
            GridView_EqParameter.Columns[ID].Visible = false;//隐藏数据库的ID列
            GridView_EqParameter.Columns[2].Width = 80;
            GridView_EqParameter.Columns[3].Width = 80;
            GridView_EqParameter.Columns[4].Width = 30;
            GridView_EqParameter.Columns[5].Width = 30;
            GridView_EqParameter.Columns[6].Width = 20;
            //根据数据内容自动调整列、行宽
            //GridView_EqParameter.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader;
            //GridView_EqParameter.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
            GridView_EqParameter.ColumnHeadersDefaultCellStyle.Font= new Font("黑体", 15, FontStyle.Bold);
            GridView_EqParameter.RowsDefaultCellStyle.Font = new Font("黑体",13, FontStyle.Regular);
        }

        #endregion

三、数据加载

 #region   数据操作

        /// <summary>
        /// 加载当前设备参数类型的所有信息
        /// </summary>
        /// <param name="curEqParameterTypeName">当前设备参数类型名称</param>
        private void LoadCurEqParameterTypeAllInfos(string curEqParameterTypeName)
        {
            //清空缓存
            dtAllInfoData.Clear();
            if (!string.IsNullOrEmpty(curEqParameterTypeName))
            {
                //获取当前设备参数类型
                curEqParameterType = curEqParameterTypeName;
                Global_Parameter.curEqParameterType = curEqParameterType;
                //获取当前设备ID
                curEquipmentID = Global_Parameter.curEquipmentID;

                if (!string.IsNullOrEmpty(curEquipmentID))
                {
                    int eq_ID = int.Parse(curEquipmentID);
                    //加载角度信息
                    List<EqParameterData> eqParameterDatas = new List<EqParameterData>();
                    int numbers = CommonEqParameterOperation.GetInstance().QueryCurEqParameterOfTypeTotalNumbers(eq_ID, curEqParameterType);
                    eqParameterDatas = CommonEqParameterOperation.GetInstance().QueryCurEqParameterOfTypeAllInfos(eq_ID, curEqParameterType, 0, numbers);
                    int count = eqParameterDatas.Count;
                    if (count > 0)
                    {
                        for (int i = 0; i < count; i++)
                        {
                            row = dtAllInfoData.NewRow();
                            row["Number"] = i + 1;
                            row[ID] = eqParameterDatas[i].ID;
                            row[ParameterDesc] = eqParameterDatas[i].ParameterDesc;
                            row[ParameterAddress] = eqParameterDatas[i].ParameterAddress;
                            dtAllInfoData.Rows.Add(row);

                        }
                        if (row != null)
                        {
                            GridView_EqParameter.DataSource = dtAllInfoData;
                            if (firstOne == 1)
                            {
                                //每一行都包含编辑删除按钮
                                SingleRowOfEditAndDelete();
                            }
                            firstOne = 0;
                        }

                        //表格标题名称
                        TableTitleName();

                    }
                    else
                    {
                        MessageBox.Show("当前没有参数类型的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                else
                {
                    MessageBox.Show("请选择设备!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBox.Show("当前设备类型参数为NULL!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            
        }


        #endregion

四、获取当前选中数据行编辑信息

/// <summary>
        /// 获取到当前选中行的数据信息
        /// </summary>
        /// <param name="queryValueName">查询值的数据库字段名称</param>
        /// <returns></returns>
        private string GetCurSelectedRowData(string queryValueName)
        {
            string value = string.Empty;
            if (!string.IsNullOrEmpty(queryValueName))
            {
                value= GridView_EqParameter.Rows[GridView_EqParameter.CurrentRow.Index].Cells[queryValueName].Value.ToString();
            }
            return value;
        }

五、 编辑、删除当前选中行的事件方法

①首先选中表格控件(DataGridView)的事件属性,双击如下所示的红框内容编写事件方法

②编写对应的事件方法

 //编辑、删除事件方法
        private void GridView_EqParameter_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int col = e.ColumnIndex;

            //获取到当前设备参数的ID
            curSelectedEqParameterID = GetCurSelectedRowData(ID);
            //编辑修改
            if (col == 4)
            {
                if (!string.IsNullOrEmpty(curSelectedEqParameterID))
                {
                    curSelectedEqParameterName = GetCurSelectedRowData(ParameterDesc);
                    curSelectedEqParameterAddress = GetCurSelectedRowData(ParameterAddress);

                    if (!string.IsNullOrEmpty(curSelectedEqParameterName))
                    {
                        Global_Parameter.curEqParameterID = curSelectedEqParameterID;
                        Global_Parameter.curEqParameterDesc = curSelectedEqParameterName;
                        Global_Parameter.curEqParameterAddress = curSelectedEqParameterAddress;

                        //打开编辑区域面板
                        EqParameterUpdate eqParameterUpdate = new EqParameterUpdate();
                        eqParameterUpdate.Show();
                    }
                    else
                    {
                        MessageBox.Show("设备参数信息获取失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("当前设备参数ID为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
            }
            //删除
            if (col==5)
            {
                if (!string.IsNullOrEmpty(curSelectedEqParameterID))
                {
                    DialogResult dr = MessageBox.Show("你确定删除吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    if (dr == DialogResult.OK)
                    {
                        //删除信息
                        bool isSuccess = CommonEqParameterOperation.GetInstance().DeleteEqParameterInfo(curSelectedEqParameterID);
                        if (isSuccess)
                        {
                            MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            EverydayLog.Write("删除成功!删除设备参数ID="+ curSelectedEqParameterID);
                            //刷新数据
                            RefreshData(curEqParameterType,true);
                        }
                        else
                        {
                            MessageBox.Show("删除失败!数据库连接失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            EverydayLog.Write("删除失败!数据库连接失败!");
                        }
                    }
                  
                }
                else
                {
                    MessageBox.Show("当前设备参数ID为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
            }

        }

参考内容:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.datagridviewbuttoncolumn.text?redirectedfrom=MSDN&view=netframework-4.7.2#System_Windows_Forms_DataGridViewButtonColumn_Text

 

 

 

首先,需要将数据库连接到应用程序中。可以通过以下步骤完成: 1. 在 Visual Studio 中,打开“解决方案资源管理器”,右键单击项目名称,选择“添加”->“新建项”->“数据”->“数据集”。 2. 在“添加新项”对话框中,输入数据集的名称,单击“添加”。 3. 在“数据集设计器”中,右键单击空白区域,选择“添加”->“新建连接”。 4. 在“添加连接”对话框中,输入数据库的连接字符串,单击“测试连接”按钮,确保可以连接到数据库,然后单击“确定”按钮。 5. 在“数据集设计器”中,右键单击空白区域,选择“添加”->“新建表适配器”。 6. 在“新建表适配器向导”中,选择要操作的表,单击“下一步”按钮。 7. 在“配置选择”页面中,选择要执行的操作,例如“选择”,单击“下一步”按钮。 8. 在“生成 SQL 语句”页面中,可以修生成的 SQL 语句,单击“完成”按钮。 9. 在“数据集设计器”中,会生成一个表适配器和一个数据表。 10. 可以在窗体中添加控件,例如 DataGridView 控件,用于显示数据。 下面是实现功能的示例代码: ```csharp using System; using System.Data; using System.Windows.Forms; using System.Data.SqlClient; namespace WindowsFormsApp1 { public partial class Form1 : Form { private SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=MyDB;Integrated Security=True"); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Users", conn); DataTable dt = new DataTable(); adapter.Fill(dt); dataGridView1.DataSource = dt; } private void btnAdd_Click(object sender, EventArgs e) { SqlCommand cmd = new SqlCommand("INSERT INTO Users (Name, Age) VALUES (@Name, @Age)", conn); cmd.Parameters.AddWithValue("@Name", txtName.Text); cmd.Parameters.AddWithValue("@Age", txtAge.Text); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Users", conn); DataTable dt = new DataTable(); adapter.Fill(dt); dataGridView1.DataSource = dt; } private void btnDelete_Click(object sender, EventArgs e) { SqlCommand cmd = new SqlCommand("DELETE FROM Users WHERE Id=@Id", conn); cmd.Parameters.AddWithValue("@Id", dataGridView1.CurrentRow.Cells["Id"].Value); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Users", conn); DataTable dt = new DataTable(); adapter.Fill(dt); dataGridView1.DataSource = dt; } private void btnUpdate_Click(object sender, EventArgs e) { SqlCommand cmd = new SqlCommand("UPDATE Users SET Name=@Name, Age=@Age WHERE Id=@Id", conn); cmd.Parameters.AddWithValue("@Name", txtName.Text); cmd.Parameters.AddWithValue("@Age", txtAge.Text); cmd.Parameters.AddWithValue("@Id", dataGridView1.CurrentRow.Cells["Id"].Value); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Users", conn); DataTable dt = new DataTable(); adapter.Fill(dt); dataGridView1.DataSource = dt; } private void btnSearch_Click(object sender, EventArgs e) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Users WHERE Name LIKE '%" + txtSearch.Text + "%'", conn); DataTable dt = new DataTable(); adapter.Fill(dt); dataGridView1.DataSource = dt; } } } ``` 在窗体中添加以下控件: - 一个 DataGridView 控件,用于显示数据。 - 一个 TextBox 控件,用于输入搜索关键字。 - 一个 Button 控件,用于执行搜索操作。 - 一个 Button 控件,用于执行添加操作。 - 一个 Button 控件,用于执行除操作。 - 一个 Button 控件,用于执行修操作。 - 两个 Label 控件,用于显示提示信息。 - 两个 TextBox 控件,用于输入添加、修数据。 在窗体的 Load 事件中,使用 SqlDataAdapter 填充 DataGridView 控件。在添加、除、修、搜索操作的按钮的 Click 事件中,分别执行对应的 SQL 语句,然后使用 SqlDataAdapter 刷新 DataGridView 控件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛奶咖啡13

我们一起来让这个世界有趣一点…

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值