Question

Dans notre application, nous avons des feuilles de style pour définir des couleurs communes, etc. J'ai écrit une fonction rapide et sale dans laquelle je récupère un jeu de données à partir d'une procédure stockée, loupe les colonnes que je ne souhaite pas afficher, DataGrid généré par programme, définissez les styles de DataGrid, puis exportez-le vers Excel. Tout le monde aime les couleurs de la sortie Excel (Gasp! Elles correspondent aux couleurs de DataGrid, blah blah blah…).

Ma dernière pièce que j'aimerais ajouter est que je voudrais accéder par programme à un style et récupérer des codes de couleur et d'autres éléments (.IntranetGridHead) au lieu de les coder en dur, comme je le fais actuellement.

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;

Évidemment, chaque fois que la société passera à un autre «changement de nom» et que les valeurs de la feuille de style changent, les couleurs Excel se marient automatiquement et je vais obtenir un gros (cookie au verso ||).

Avez-vous des idées des personnes C # qui en savent plus que moi (quelle serait la plupart d'entre vous…)?
Merci,
Michael

Était-ce utile?

La solution

Tous les objets Web.UI.Control ont une propriété .Styles, à laquelle vous pouvez accéder en tant que Styles ["Nom"]. Par conséquent, vous pouvez faire ceci:

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

J'ai eu une pensée similaire il y a plusieurs mois :) Notez pour que cela fonctionne correctement, votre grille doit être runat = "quot server".

Modifier: On dirait que vous voulez LIRE la grille et l'utiliser ... Si vous utilisez un style .CssStyle et une feuille de style (.css), vous devrez créer un HTTP GET dans ce fichier css et l'analyser vous-même.

Autres conseils

Vous devez analyser le fichier CSS vous-même et IIRC ne dispose pas d'un analyseur de fichier CSS dans le framework .NET. Cependant, il y en a un gratuit que vous pouvez trouver ici:

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

Vous devriez alors pouvoir l'utiliser pour analyser le fichier CSS. À partir de là, vous devriez pouvoir obtenir le style et la valeur et les appliquer à votre grille de données.

J'ai écrit quelque chose dans ce sens il y a quelque temps. Cela impliquait un gestionnaire HttpHandler pour traiter les fichiers CSS, une modification de la configuration IIS pour que asp.net reçoive les demandes de fichiers CSS et une structure de fichier xml simple contenant mes définitions de couleurs. Mais vous avez fait cela avec une base de données, ce qui est bien aussi.

Ensuite, dans le CSS, j'avais quelque chose comme ça ...

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

avec mon xml définissant les valeurs pour button-background-color et button-text-color. J'ai utilisé le remplacement de texte d'expression régulière pour traiter le fichier CSS en le remplaçant par les valeurs pertinentes du fichier xml.

Je suis sûr que vous pouvez prendre certaines de ces idées et les combiner avec votre code existant pour obtenir l’effet souhaité. Vous devrez bien sûr gérer la mise en cache et les modifications de votre fichier de base de données / xml.

L’espoir que cela aide.

Si vous avez besoin d'indicateurs, alors je suis sûr de pouvoir extraire un exemple de code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top