Pergunta

Em nossa aplicação temos folhas de estilo para definir cores comuns etc ... Eu escrevi uma função rápida e suja onde eu recebo um conjunto de dados a partir de um procedimento armazenado, cortará as colunas que eu não quero mostrar, cram-lo em um programaticamente gerado DataGrid, definir que os estilos de DataGrid, em seguida, exportá-lo para o Excel. Todo mundo adora as cores na saída Excel (surpresa! Eles combinam com as cores DataGrid, blá blá blá ...).
Minha última peça que eu gostaria de adicionar a ele é que eu gostaria de acessar programaticamente o estilo e cor grab códigos e outros itens a partir dele (.IntranetGridHead) em vez de codificar-los, que é o que eu estou fazendo agora.

int iHeaderColor = Convert.ToInt32 ("D0D7E8", 16);
DataGrid dg = new DataGrid();
dg.DataSource = dsReturnDataSet.Tables[0].DefaultView;
dg.DataBind();

dg.HeaderStyle.BackColor = System.Drawing.Color.FromArgb(iHeaderColor);
dg.HeaderStyle.Font.Bold = true;
dg.HeaderStyle.Font.Size = 10;

Obviamente, então sempre que a empresa passa por um outro “rebranding” e o estilo mudança valores patrimoniais, as cores Excel irá corresponder automaticamente e eu vou ter uma grande (tapinha nas costas || cookie).
Todos os pensamentos dos C # pessoas que sabem mais do que eu (o que seria a maioria de vocês ...)?
Obrigado,
Michael

Foi útil?

Solução

objetos Todos Web.UI.Control tem uma propriedade .Styles, que pode ser acessado como Styles [ "name"]. Portanto, você pode fazer isso:

DataTable dt = LookupStyles();
dg.Styles.Clear();
foreach (DataRow dr in dt.Rows)
  dg.Styles.Add(dr["StyleName"].ToString(), dr["StyleValue"].ToString());

Eu tinha um pensamento semelhante há vários meses :) Nota para esta para a direita trabalho, sua grade deve ser runat = "server".

Edit: Parece que você quer ler a grade e assim ... Se você estiver usando uma .CssStyle e uma folha de estilo (CSS), você vai ter que fazer um HTTP GET para o arquivo css e analisá-lo você mesmo.

Outras dicas

Você teria que analisar o arquivo CSS mesmo, e IIRC não há analisador de arquivo CSS no framework .NET para fora da caixa. No entanto, há um livre você pode encontrar aqui:

http://www.codeproject.com/KB/recipes/CSSParser.aspx

Você deve então ser capaz de usar isso para analisar o arquivo CSS. De lá, você deve ser capaz de obter o estilo e o valor e aplicá-lo à sua grade de dados.

Eu escrevi algo ao longo destas linhas uma volta enquanto. Tratava-se de um HttpHandler para lidar com os arquivos CSS, uma alteração no IIS de configuração para obter asp.net para receber as solicitações para os arquivos CSS e uma estrutura de arquivo xml simples que continha minhas definições de cor. Mas você já fez isso com um banco de dados, que é muito fina.

Em seguida, no CSS eu tinha algo como este ...

.button
{
    background-color: $colours:button-background-colour;
    color: $colours:button-text-colour;
}

com meu xml definição dos valores para o botão-background-color e botão-text-cor. Eu costumava substituição de texto expressão regular para processar o arquivo CSS substituindo os valores relevantes do arquivo xml.

Eu tenho certeza que você poderia tomar algumas dessas idéias e combiná-lo com o seu código existente para obter o efeito desejado. Você vai de necessidade curso para lidar com o cache e alterações ao seu arquivo de banco de dados / xml.

Espero que ajude.

Se você precisar de qualquer ponteiros sobre nada disso, então eu tenho certeza que posso cavar alguns códigos de exemplo.

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