DataGridView: valores de formato sem alterar os dados limitados?
-
27-09-2019 - |
Pergunta
Eu tenho pesquisado na web, mas não consegui encontrar uma resposta.
Eu tenho um DataGridView com um BindingSource limitado, que possui uma lista de objetos de uma classe personalizada. Entre os campos da classe, tenho um campo de string que quero mostrar usando
Path.GetFileName();
Porque ele contém todo o filepath e o que eu quero é mostrar apenas o nome do arquivo, mas mantendo o filepath (ou seja, os dados limitados intactos) no objeto limitado.
Existe alguma maneira de fazer isso (formato, modelo, estilos, ...)? Como sempre que eu altero o campo de valor da célula, ele altera o valor do objeto (que é lógica).
Muito obrigado antecipadamente
Solução
Use o DataGridView.CellFormatting Evento no DataGridView. Isso vai te dar um DataGridViewCellFormattingEventArgs Objeto com informações sobre a célula atual, incluindo a linha e a coluna e o valor não formado. Você atualiza a propriedade Value para o valor formatado e define o formattingApplicado como true, e o DataGridView renderizará esse valor.
Algo assim:
private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0) // Check for the column you want
{
e.Value = Path.GetFileName(e.Value.ToString());
e.FormattingApplied = true;
}
}