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

Foi útil?

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;
    }
}

Outras dicas

o Binding A classe tem um Format() e Parse() Manipulador de eventos, onde você pode definir como os dados serão formatados nos dois lados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top