заменить true / false в столбцах datagridview - PullRequest
8 голосов
/ 28 марта 2012

У меня есть представление данных, которое я заполняю, как показано ниже:

var q= repository.GetStudents();//

dataGridView1.DataSource = null;
dataGridView1.Columns.Clear();

dataGridView1.DataSource = q;

dataGridView1.Columns.RemoveAt(1);
//Remove IsActive 
//Cause I want to have my own implementation 

dataGridView1.Columns[0].DataPropertyName = "StudentID";
dataGridView1.Columns[0].HeaderText = "Studunet ID";

dataGridView1.Columns[1].DataPropertyName = "IsActive";
dataGridView1.Columns[1].HeaderText = "Status";

Свойство IsActive имеет логический тип. Когда отображается ячейка «IsActive», она показывает true / false. Я хочу заменить его своим собственным значением.

Я прочитал это и это сообщений, но я не смог решить мою проблему.

1 Ответ

11 голосов
/ 28 марта 2012

Вы можете использовать CellFormatting событие DataGridView, например:

void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    var grid = (DataGridView)sender;
    if (grid.Columns[e.ColumnIndex].Name == "IsActive")
    {
        e.Value = (bool)e.Value ? "MY_TEXT_FOR_TRUE" : "MY_TEXT_FOR_FALSE";
        e.FormattingApplied = true;
    }
}

РЕДАКТИРОВАТЬ (согласно комментарию):

Это очень похоже на то, что вы делаете сейчас, просто удалите связанный столбец и добавьте новый столбец нужного типа и правильно установите DataPropertyName, например:

this.dataGridView1.Columns.Remove("COL_TO_CUSTOMIZE");
var btnCol = new DataGridViewDisableButtonColumn();
btnCol.Name = "COL_TO_CUSTOMIZE";
btnCol.DataPropertyName = "COL_TO_CUSTOMIZE";
var col = this.dataGridView1.Columns.Add(btnCol);

Примечаниечто это добавляет столбец в конце, но вы можете определить положение столбца, используя dataGridView.Columns.Insert метод вместо Add.

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