Как получить разный текст для каждой кнопки в одном столбце динамически в datagridview - PullRequest
0 голосов
/ 10 октября 2018

Я создал пользовательский элемент управления, который имеет datagridview.Затем я добавил строку и столбец динамически из текстового файла в datagridview.

Моя проблема в том, что мне нужен столбец, в котором есть кнопки в каждой строке.В первой строке текст кнопки «Test1», а во второй строке «Test2» не тот же текст.

После поиска в Google я попробовал этот код

var testButton = new DataGridViewButtonColumn();
testButton.Name = "Test";
testButton.HeaderText = "Test";
testButton.UseColumnTextForButtonValue = true;

testButton.Text = "Test1";
this.dataGridView1.Columns.Add(testButton);

Но он даетмне обе кнопки текста как «Test1».enter image description here

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Предполагая, что вы находитесь в Windows Forms, вам нужно добавить DataGridViewButtonColumn к вашей DataGridView - не напрямую к DataTable.

Это должно произойти где-то после привязки DataTable к DataGridView.

Что-то вроде этого должно работать:

DataGridViewButtonColumn uninstallButtonColumn = new DataGridViewButtonColumn();
uninstallButtonColumn.Name = "uninstall_column";
uninstallButtonColumn.Text = "Uninstall";
int columnIndex = 2;
if (dataGridViewSoftware.Columns["uninstall_column"] == null)
{
    dataGridViewSoftware.Columns.Insert(columnIndex, uninstallButtonColumn);
}

Конечно, вам нужно обработать событие CellClick сетки, чтобы что-нибудь сделать с кнопкой.

Добавьте это где-нибудь в вашем DataGridView Коде инициализации

dataGridViewSoftware.CellClick += dataGridViewSoftware_CellClick;

Затем создайте обработчик:

private void dataGridViewSoftware_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == dataGridViewSoftware.Columns["uninstall_column"].Index)
    {
        //Do something with your button.
    }
}
0 голосов
/ 10 октября 2018
//Change the Button text property on a data-bound event 

    protected void YourDataGridViewId_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       // finding the button control..`enter code here`.

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
           Button YourbtnVariable = (Button)e.Row.FindControl("YourbuttonID");
           YourbtnVariable.Text = "Text"+e.Row.RowIndex+1;
           //e.Row.RowIndex+1 will give u index of row every time incremented with 1
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...