Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 针对窗口窗体应用程序c中的行中的数据添加删除链接标签#_C#_Winforms_Datagridview - Fatal编程技术网

C# 针对窗口窗体应用程序c中的行中的数据添加删除链接标签#

C# 针对窗口窗体应用程序c中的行中的数据添加删除链接标签#,c#,winforms,datagridview,C#,Winforms,Datagridview,在我的windows应用程序中,我想针对datagridview中的每条记录添加linklabel,即Delete,并从数据库中填充datagridview,如下所示: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Sys

在我的windows应用程序中,我想针对datagridview中的每条记录添加linklabel,即
Delete
,并从数据库中填充datagridview,如下所示:

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;
using System.Data.SqlClient;

namespace search
{
    public partial class Form1 : Form
    {
        SqlConnection connection = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=C:\\Users\\Administrator\\Documents\\Contact.mdf;Integrated Security=True;");
        SqlDataAdapter da = new SqlDataAdapter();
        DataSet ds = new DataSet();
        public Form1()
        {
            InitializeComponent();

        }
        public void bindDatagridview()
        {
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            da.SelectCommand = new SqlCommand("Select * from contactsinfo", connection);
            da.Fill(ds);

            dataGridView1.DataSource = ds.Tables[0];
            ds.Tables[0].Columns.Add("Delete", typeof(String));
            foreach (DataGridViewRow r in dataGridView1.Rows)
            {
                DataGridViewLinkCell lc = new DataGridViewLinkCell();
                lc.Value = r.Cells[2].Value = "Delete";
                dataGridView1[2, r.Index] = lc;
            }
            clear();
        }
        public void clear()
        {
            textBox1.Text = string.Empty;
            textBox2.Text = string.Empty;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bindDatagridview();
        }
    }
}
DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn();
dgvLink.UseColumnTextForLinkValue = true;
dgvLink.LinkBehavior = LinkBehavior.SystemDefault;
dgvLink.HeaderText = "";
dgvLink.Name = "lnk_delete";
dgvLink.LinkColor = Color.Blue;
dgvLink.TrackVisitedState = true;
dgvLink.Text = "Delete";
dgvLink.UseColumnTextForLinkValue = true;
dataGridView1.Columns.Add(dgvLink);
上面的代码针对行中的每个数据添加
Delete
linkLabel,但是当我单击datagridview的headertext时,
linkLabel
转换为简单文本,如何转换,以及是否有任何方法针对行中的每个数据添加
Delete
linkLabel。 请建议我,等待你的答复。
谢谢。

我想你的问题在于专栏的类型

var col = new DataGridViewLinkColumn();
col.DataPropertyName = "Delete";
col.Name = "Delete";

ds.Tables[0].Columns.Add(col);
DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn();
dgvLink.UseColumnTextForLinkValue = true;
dgvLink.LinkBehavior = LinkBehavior.SystemDefault;
dgvLink.HeaderText = "";
dgvLink.Name = "lnk_delete";
dgvLink.LinkColor = Color.Blue;
dgvLink.TrackVisitedState = true;
dgvLink.Text = "Delete";
dgvLink.UseColumnTextForLinkValue = true;
dataGridView1.Columns.Add(dgvLink);

应该这样做。

我正在使用它,它工作正常

DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn();
dgvLink.UseColumnTextForLinkValue = true;
dgvLink.LinkBehavior = LinkBehavior.SystemDefault;
dgvLink.HeaderText = "";
dgvLink.Name = "lnk_delete";
dgvLink.LinkColor = Color.Blue;
dgvLink.TrackVisitedState = true;
dgvLink.Text = "Delete";
dgvLink.UseColumnTextForLinkValue = true;
dataGridView1.Columns.Add(dgvLink);

单击列标题对列进行排序,并查看下划线是否保留在列中(
dgvLink

DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn();
dgvLink.UseColumnTextForLinkValue = true;
dgvLink.LinkBehavior = LinkBehavior.SystemDefault;
dgvLink.HeaderText = "";
dgvLink.Name = "lnk_delete";
dgvLink.LinkColor = Color.Blue;
dgvLink.TrackVisitedState = true;
dgvLink.Text = "Delete";
dgvLink.UseColumnTextForLinkValue = true;
dataGridView1.Columns.Add(dgvLink);
尝试对列进行排序时,此下划线将消失

DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn();
dgvLink.UseColumnTextForLinkValue = true;
dgvLink.LinkBehavior = LinkBehavior.SystemDefault;
dgvLink.HeaderText = "";
dgvLink.Name = "lnk_delete";
dgvLink.LinkColor = Color.Blue;
dgvLink.TrackVisitedState = true;
dgvLink.Text = "Delete";
dgvLink.UseColumnTextForLinkValue = true;
dataGridView1.Columns.Add(dgvLink);