19

I need to add my DataGridViewButtonCell to Column, and I need to name each other with different names.

But I didn't find any text properties.

Can anyone help me, please?

i do that stuff

DataGridViewButtonCell b = new DataGridViewButtonCell(); 
b.Value = "name"; 
MainTable.Rows.Add(b);

and it doesn't work

animekun
  • 1,789
  • 4
  • 28
  • 45
  • If you set the DataGridViewCell.Value property as most answers suggest it will change the actual Value. Often not acceptable. Use the CellFormatting event and set the e.Value there! – TaW Aug 02 '14 at 11:58

10 Answers10

51

If you want all the buttons to have same text use UseColumnTextForButtonValue property.

If you want different text for each button then use DataGridViewCell.Value property

Sriram Sakthivel
  • 72,067
  • 7
  • 111
  • 189
  • 1
    UseColumnTextForButtonValue was exactly what I wanted. Set it true and set the column's Text property to what you want displayed. – Chuck Wilbur Nov 25 '13 at 16:14
  • When UseColumnTextForButtonValue is false and the gridview VirtualMode is true then the column needs to be databound for the text to display, unless you subclass the buttoncell and override the Value(GetValue/SetValue) then set it as the cell template on the column. – ximon Apr 21 '23 at 12:06
21

If you want to set the same text for all buttons, you can:

  1. In GridView properties click on edit columns
  2. Click on your button column
  3. Set Text to the text you want to see on each button
  4. Set UserColumnTextForButtonValue to True

See below:

Edit Button Column

KyleMit
  • 30,350
  • 66
  • 462
  • 664
JustLearning
  • 3,164
  • 3
  • 35
  • 52
7

I admit that I don't understand why your method wouldn't work, but I was able to get the following to do what you wanted as a work-around:

        DataGridViewButtonCell b = new DataGridViewButtonCell();
        int rowIndex = MainTable.Rows.Add(b);
        MainTable.Rows[rowIndex].Cells[0].Value = "name";

In my example I'm assuming you only have one column (a DataGridViewButtonColumn). You should be able to modify this however you like so long as you set the value after you add the row. Again, not sure why that's the case...

VineAndBranches
  • 468
  • 3
  • 7
6

I know you got your answer accepted but I added these in constructor and it worked for me. The only thing I was missing is UseColumnTextForButtonValue = true

public Form1() 
    {
        InitializeComponent();
        var editColumn = new DataGridViewButtonColumn
        {
            Text = "Edit",
            UseColumnTextForButtonValue = true,
            Name = "Edit",
            DataPropertyName = "Edit"
        };
        dataGridView1.Columns.Add(editColumn);
    }
Sabyasachi Mishra
  • 1,677
  • 2
  • 31
  • 49
  • 1
    that's nice answer, I solved it long time ago, but that's the best if it really works, can't check it for myself, but anyone looking for an answer better try this – animekun Aug 01 '15 at 17:58
5

Use this to show the same text on all buttons with default button at first

DataGridView.Columns["Buttons_Index"].DefaultCellStyle.NullValue = "name";
Andreas
  • 5,393
  • 9
  • 44
  • 53
Jinwoo.Seo
  • 81
  • 1
  • 1
0

Try

yourDataGridView.Rows[rowIndex].Cells[columnIndex].Value
progpow
  • 1,560
  • 13
  • 26
  • i do that stuff `DataGridViewButtonCell b = new DataGridViewButtonCell(); b.Value = "name"; MainTable.Rows.Add(b);` and it doesn't work – animekun Oct 03 '13 at 13:09
  • just button column, thats all – animekun Oct 03 '13 at 13:20
  • You also need add DataGridViewButtonColumn to table DataGridViewButtonColumn column = new DataGridViewButtonColumn (); column.Name = "Buttons"; MainTable.Columns.Add(column); – progpow Oct 03 '13 at 13:21
0

you looking for DataGridViewCell.Value Property

Damith
  • 62,401
  • 13
  • 102
  • 153
  • i do that stuff DataGridViewButtonCell b = new DataGridViewButtonCell(); b.Value = "name"; MainTable.Rows.Add(b); and it doesn't work – animekun Oct 03 '13 at 13:11
0

If you have just one column and that's a buttoncolumn by default

MainTable.Rows.Add("Some text");

will suffice.

Batu.Khan
  • 3,060
  • 2
  • 19
  • 26
-1

[Colimn.Name].Text = "Click Me"

[Colimn.Name].UseColumnTextForButtonValue = True

button_Text Use this code in Form_Load event-it will name all buttons in that column as "Click Me".