【问题标题】:How do I convert a cell in the DataGridView into a button?如何将 DataGridView 中的单元格转换为按钮?
【发布时间】:2015-10-24 14:20:26
【问题描述】:

我知道如何在网格视图(Web 应用程序)中使用编辑、删除、更新,但现在我正在处理 Windows 窗体。我不知道如何在 winforms 中使用相同的编辑删除更新。

我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Text.RegularExpressions;

namespace Ata_Sk_Mae_System
{
    public partial class Stock_Details : Form
    {
        public Stock_Details()
        {
            InitializeComponent();


            //Set Columns Count
            gvItem.ColumnCount = 4;

            gvItem.AutoGenerateColumns = false;

            //Hide the last blank line
            gvItem.AllowUserToAddRows = false;

            //Add Columns
            gvItem.Columns[0].Name = "ICode";
            gvItem.Columns[0].HeaderText = "Item Code";
            gvItem.Columns[0].DataPropertyName = "ICode";
            gvItem.Columns[0].Width = 100;

            gvItem.Columns[1].HeaderText = "IName";
            gvItem.Columns[1].Name = "Item Name";
            gvItem.Columns[1].DataPropertyName = "IName";
            gvItem.Columns[1].Width = 100;

            gvItem.Columns[2].Name = "Iprice";
            gvItem.Columns[2].HeaderText = "Item Price";
            gvItem.Columns[2].DataPropertyName = "Iprice";
            gvItem.Columns[2].Width = 100;

            gvItem.Columns[3].Name = "Quantity";
            gvItem.Columns[3].HeaderText = "Quantity";
            gvItem.Columns[3].DataPropertyName = "Quantity";
            gvItem.Columns[3].Width = 100;

            DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
            checkBoxColumn.HeaderText = "";
            checkBoxColumn.Width = 30;
            checkBoxColumn.Name = "checkBoxColumn";
            gvItem.Columns.Insert(0, checkBoxColumn);



            BindGrid();
            timer1.Start();
        }

        DataTable dt;

        private void btnAdd_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "Data Source=LUCKY-PC;Initial Catalog=Test;User Id=sa;Password=admin@123";
            con.Open();
            string IC = txtItemCode.Text;
            string IN = txtItemName.Text;
            string IP = txtItemPrice.Text;
            string QTY = txtQuantity.Text;

            string query = "insert into Item_Details values('" + IC + "','" + IN + "','" + IP + "','" + QTY + "')";
            SqlCommand cmd = new SqlCommand(query, con);
            cmd.ExecuteNonQuery();
            MessageBox.Show("Item Added Succesfully");
            con.Close();
            BindGrid();
            btnReset.PerformClick();
        }

        private void BindGrid()
        {
            string constring = "Data Source=LUCKY-PC;Initial Catalog=Test;User Id=sa;Password=admin@123";
            using (SqlConnection con = new SqlConnection(constring))
            {
                using (SqlCommand cmd = new SqlCommand("SELECT distinct * FROM Item_Details", con))
                {
                    cmd.CommandType = CommandType.Text;
                    using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                    {
                        using (dt = new DataTable())
                        {
                            sda.Fill(dt);
                            gvItem.DataSource = dt;
                        }
                    }
                }
            }
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            txtItemCode.Text = "";
            txtItemName.Text = "";
            txtItemPrice.Text = "";
            txtQuantity.Text = "";
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime datetimer = DateTime.Now;
            this.lblDate_Time.Text = "Date && Time:" + "[" + datetimer.ToString() + "]";
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            List<DataGridViewRow> selectedRows = (from row in gvItem.Rows.Cast<DataGridViewRow>()
                                                  where Convert.ToBoolean(row.Cells["checkBoxColumn"].Value) == true
                                                  select row).ToList();
            if (MessageBox.Show(string.Format("Do you want to delete {0} rows?", selectedRows.Count), "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                foreach (DataGridViewRow row in selectedRows)
                {
                    using (SqlConnection con = new SqlConnection("Data Source=LUCKY-PC;Initial Catalog=Test;User Id=sa;Password=admin@123"))
                    {
                        using (SqlCommand cmd = new SqlCommand("DELETE FROM Item_Details WHERE ICode = @ICode", con))
                        {
                            cmd.CommandType = CommandType.Text;
                            cmd.Parameters.AddWithValue("@ICode", row.Cells["ICode"].Value);
                            con.Open();
                            cmd.ExecuteNonQuery();
                            con.Close();
                        }
                    }
                }

                this.BindGrid();
            }
        }

        private void txtSearch_TextChanged(object sender, EventArgs e)
        {
            DataView dv = new DataView(dt);
            dv.RowFilter = string.Format("Icode Like '%{0}%'", txtSearch.Text);
            gvItem.DataSource = dv;
        }


    }
}

请任何人帮助我,如何在所有行中添加编辑和更新按钮以及如何使用它们。我正在使用 sql server 2008 作为数据库。提前谢谢。

【问题讨论】:

  • 有人可能会过来对您的问题投反对票,因此不鼓励使用直接阅读教程的问题。尽管您提供了代码,但您必须提及您的调试工作并说明哪些工作有效,哪些无效。此外,您可以编辑您的问题:如何将 DataGridView 中的单元格转换为按钮?
  • 我是 windows 窗体的新手,我不知道如何在网格视图控件中添加编辑和更新按钮......
  • @raja 你可以使用DataGridViewButtonColumn在每一行显示编辑和删除,或者你可以简单地使用ButtonTooStripDataGridView上方显示编辑和删除

标签: c# asp.net winforms gridview


【解决方案1】:

请查看您正在使用的 Visual Studio 版本的 DataGridViewButton 列的使用情况。

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewbuttoncolumn%28v=vs.110%29.aspx

【讨论】:

  • 之后,如果按钮似乎没有按预期工作,请将代码和您的调试工作作为(另一个)问题的一部分发布。
猜你喜欢
  • 1970-01-01
  • 2021-05-03
  • 2022-12-30
  • 2015-03-13
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
相关资源
最近更新 更多