TÃTULO DO GRIDVIEW COM ATRIBUTO DA PROPRIEDADE
boa tarde
estou populando um datagrid com list, conforme código abaixo
a classe está da seguinte forma
porém o tÃtulo da coluna está sendo exibido com o nome a propriedade e nome com o atributo (displayname).
Gostaria de ajuda para identificar o que estou fazendo e errado.
Grato
estou populando um datagrid com list, conforme código abaixo
dados.DataSource = new List<Library.Class.Factor>(new Library.Class.Factor().GetAll());
dgvFactor.DataSource = dados;
dgvFactor.DataBind();
a classe está da seguinte forma
public partial class Factor : Backwork<Factor>
{
[Key]
[DisplayName([Ô]Cód[Ô])]
[DataObjectField(true, true)]
[Column([Ô]fctrId[Ô])]
public int Id { get; set; }
[DataObjectField(false, false)]
[Column([Ô]fctrTitle[Ô])]
[DisplayName([Ô]Descriçao[Ô])]
public string Title { get; set; }
porém o tÃtulo da coluna está sendo exibido com o nome a propriedade e nome com o atributo (displayname).
Gostaria de ajuda para identificar o que estou fazendo e errado.
Grato
A segunda linha [Ô]dgvFactor.DataSource = dados;[Ô], não é necessária, você já está passando os dados para o datagridview na primeira...
Boa tarde Kerplunk,
Obrigado pela agilidade na resposta
na linha
Também realizei um teste em winform e funcionou perfeitamente, porém em webform estou tendo esta dificuldade.
Obrigado pela agilidade na resposta
na linha
Citação:, [Ô]dados[Ô] é um BindingSource, e não a grid, assim a linha [Ô]dgvFactor.DataSource = dados;[Ô] tem necessidade.dados.DataSource = new List<Library.Class.Factor>(new Library.Class.Factor().GetAll());
Também realizei um teste em winform e funcionou perfeitamente, porém em webform estou tendo esta dificuldade.
é uma aplicação Web e não Windows forms?
Sim é uma aplicação web
A principal diferença entre aplicações Web e Desktop é o tipo de dados que trafega. Em uma aplicação Desktop, o acesso é binário, ou seja, temos acesso total à s classes utilizadas, incluindo para Reflection, que é o que acontece quando colocamos essas decorações nas classes e propriedades. Já na aplicação Web, o que circula são dados em formato de texto(seja em formato XML ou JSON). Por essa razão, o que a aplicação Web recebe são os dados apenas, com a estrutura normal da classe, mas não dados binários das classes. Por isso para aplicações Web precisam de funções auxiliares para poder ter esses dados disponÃveis.
Boa noite Kerplunk
Estou vendo agora seu post, pois estava trabalhando na solução e foi exatamente isto que eu tive que fazer, usar funções auxiliares para obter o resultado esperado.
Segue a solução
Muito obrigado pela sua ajuda.
PS. Estou gostando e aprendendo muito com seus vÃdeos. Você tem um método de explicar muito direto e simples.
Estou vendo agora seu post, pois estava trabalhando na solução e foi exatamente isto que eu tive que fazer, usar funções auxiliares para obter o resultado esperado.
Segue a solução
protected void dgvFactor_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
e.Row.Cells[i].Text = GetDisplayName(e.Row.Cells[i].Text);
}
}
}
protected string GetDisplayName(string headerText)
{
string newHeader = string.Empty;
foreach (PropertyInfo item in typeof(Library.Class.Factor).GetProperties().ToList().Where(p => p.GetCustomAttribute(typeof(DisplayNameAttribute)) != null))
{
if (item.Name == headerText)
{
newHeader = ((DisplayNameAttribute)item.GetCustomAttribute(typeof(DisplayNameAttribute))).DisplayName;
break;
}
}
return newHeader;
Muito obrigado pela sua ajuda.
PS. Estou gostando e aprendendo muito com seus vÃdeos. Você tem um método de explicar muito direto e simples.
Fico contente de poder ajudar! E obrigado por assistir os vÃdeos!
Apesar de eu não sugerir o uso de WebForms e preferir muito mais aplicações HTML puro, já que está fazendo uso de uma WebAPI. Recomendo e muito o uso de algum framework(UI) pronta para aplicações Web como o JEasyUI. Apesar de não ser gratuito, o preço é bem módico e pode ser repassado para os clientes, diluÃdos em vários clientes, já que a licença permite a distribuição para vários clientes. Os controles deles são muito simples de serem usados e muito dinâmicos, até mesmo mais que vários outros frameworks mais caros.
Faça seu login para responder