Domanda

Nella nostra applicazione abbiamo fogli di stile per definire colori comuni, ecc ... Ho scritto una funzione veloce e sporca in cui ottengo un set di dati da una procedura memorizzata, lop le colonne che non voglio mostrare, lo inserisco in un DataGrid generato a livello di codice, impostare gli stili di DataGrid, quindi esportarlo in Excel. Tutti amano i colori nell'output di Excel (Gasp! Corrispondono ai colori DataGrid, blah blah blah…).

Il mio ultimo pezzo che vorrei aggiungere ad esso è che vorrei accedere a uno stile a livello di codice e prendere codici colore e altri elementi da esso (.IntranetGridHead) invece di codificarli, cosa che sto facendo adesso.

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;

Ovviamente ogni volta che la società passa attraverso un altro "rebranding" e i valori del foglio di stile cambiano, i colori di Excel si abbineranno automaticamente e otterrò un grande (pacca sul retro || cookie).

Qualche idea da parte delle persone C # che conoscono più di me (quale sarebbe la maggior parte di voi ...)?
Grazie,
Michael

È stato utile?

Soluzione

Tutti gli oggetti Web.UI.Control hanno una proprietà .Styles, a cui è possibile accedere come Stili [" Nome "]. Quindi puoi farlo:

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

Ho avuto un pensiero simile diversi mesi fa :) Nota per farlo funzionare bene, la tua griglia deve essere runat = " server " ;.

Modifica: Sembra che tu voglia leggere la griglia e usarlo ... Se stai usando uno .CssStyle e uno Stylesheet (.css), dovrai fare un HTTP GET su quel file css e analizzarlo tu stesso.

Altri suggerimenti

Dovresti analizzare il file CSS da solo, e IIRC non ha un parser di file CSS nel framework .NET pronto all'uso. Tuttavia, ce n'è uno gratuito che puoi trovare qui:

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

Dovresti quindi essere in grado di usarlo per analizzare il file CSS. Da lì dovresti essere in grado di ottenere lo stile e il valore e applicarlo alla tua griglia di dati.

Qualche tempo fa ho scritto qualcosa del genere. Ha coinvolto un HttpHandler per gestire i file CSS, una modifica alla configurazione IIS per ottenere asp.net per ricevere le richieste per i file CSS e una semplice struttura di file XML che conteneva le mie definizioni di colore. Ma lo hai fatto con un database, che va bene anche.

Quindi nel CSS avevo qualcosa del genere ...

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

con il mio xml che definisce i valori per button-background-color e button-text-color. Ho usato la sostituzione del testo delle espressioni regolari per elaborare il file CSS sostituendo i valori pertinenti dal file xml.

Sono sicuro che potresti prendere alcune di quelle idee e combinarle con il tuo codice esistente per ottenere l'effetto desiderato. Ovviamente dovrai occuparti della memorizzazione nella cache e delle modifiche al tuo database / file XML.

Spero che sia d'aiuto.

Se hai bisogno di qualche puntatore su uno di questi, allora sono sicuro di poter estrarre qualche codice di esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top