龙空技术网

datagridview根据条件控制按钮列是否显示

逍遥总遥 544

前言:

此时你们对“怎么在gridview后面添加一列”大概比较着重,你们都想要学习一些“怎么在gridview后面添加一列”的相关文章。那么小编同时在网摘上收集了一些对于“怎么在gridview后面添加一列””的相关文章,希望姐妹们能喜欢,各位老铁们一起来了解一下吧!

昨天研究了一下如何给datagridview添加按钮列,也解决了点击问题,后来又有一个需求就是想根据不同的值来设置有些行的按钮不显示,如图:

实现这个功能的代码如下:

using System.Data;using System.Data.Common;namespace mydgv{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        DataTable GetDT()        {            DataTable mydt = new DataTable();            DataColumn dc0 = mydt.Columns.Add("ID", typeof(Int32));            DataColumn dc1 = new DataColumn();            mydt.Columns.Add(dc1);            for (int i = 0; i < 5; i++)            {                DataRow newRow = mydt.NewRow();                newRow[0] = "0";                newRow[1] = i;                //在最后面插入数据                mydt.Rows.Add(newRow);            }            return mydt;        }        private void button1_Click(object sender, EventArgs e)        {            //绑定本来的数据,我这里的数据已经为2列            dataGridView1.DataSource = GetDT();            //创建一个按钮列            DataGridViewButtonColumn DGBC = new DataGridViewButtonColumn();            //是否用自定义的文本            DGBC.UseColumnTextForButtonValue = true;            DGBC.Text = "删除";            DGBC.Name = "Delete";            //添加按钮列,这里它是第3列了            dataGridView1.Columns.Add(DGBC);            //更改按钮列标题            dataGridView1.Columns[2].HeaderText = "删除";            int count = dataGridView1.Rows.Count;            for (int i = 0; i < count; i++)            {                //我这里是第2列格子的内容                string theid = dataGridView1.Rows[i].Cells[1].Value.ToString();                //如果内容是 1                 if (theid == "1")                {                    DataGridViewTextBoxCell txtcell = new DataGridViewTextBoxCell();                                        dataGridView1.Rows[i].Cells[2] = txtcell;                    txtcell.ReadOnly = true;                }            }        }        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)        {            //点吉的内容是哪一列            int CIndex = e.ColumnIndex;            //如果是第3列,也就是我们设置的按钮列            if (CIndex == 2)            {                //得到是第几行                int rowindex = e.RowIndex;                //得到该行其它格子的内容,                //我这里是第2列格子的内容                string theid = dataGridView1.Rows[rowindex].Cells[1].Value.ToString();                label1.Text = "准备删除!" + theid;            }        }        private void Form1_Load(object sender, EventArgs e)        {        }    }}
主要代码说明

//如果内容是 1

if (theid == "1")

{

DataGridViewTextBoxCell txtcell = new DataGridViewTextBoxCell();

dataGridView1.Rows[i].Cells[2] = txtcell;

txtcell.ReadOnly = true; //是否只读

}

这里主要是根据theid这一列的值来做出调整,如果此值为1,那么就用一个DataGridViewTextBoxCell来替换那个按钮。

我们也可以用 txtcell.Value = "不可删除 "; 这样的方法来设置文本框的说明或者说更改一下里面的文本,以方便做下一步操作,但需要注意的是,这里点击它也会触发点击事件,就又要做一番判断了。

标签: #怎么在gridview后面添加一列