Frage

In unserer Anwendung wir Stylesheets haben gemeinsame Farben zu definieren, etc ... Ich schrieb eine schnelle und schmutzige Funktion, wo ich einen Datensatz aus einer gespeicherten Prozedur erhalten, abhauen der Spalten, die ich will nicht zeigen, stopft es in eine programmatisch erzeugt DataGrid- eingestellt, dass Datagrid-Styles, dann ist es nach Excel exportieren. Jeder liebt die Farben in der Excel-Ausgabe (Gasp! Sie passen die Datagrid-Farben, bla bla bla ...).
Mein letztes Stück, das ich ihm hinzufügen möchte ist, dass ich programmatisch einen Stil und greifen Farbcodes und andere Gegenstände von ihm (.IntranetGridHead) statt schwer, sie Codierung zugreifen möchte, das ist, was ich jetzt tue.

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;

Offensichtlich dann, wenn das Unternehmen durch eine anderen „Rebranding“ geht und die Stylesheet-Werte ändern, werden die Excel-Farben automatisch anzeigen lassen und ich werde eine große (Klaps auf dem Rücken || Cookie) erhalten.
Alle Gedanken von den C # Menschen, die mehr als ich weiß (was ... die meisten von euch wäre)?
Danke,
Michael

War es hilfreich?

Lösung

Alle Web.UI.Control Objekte haben eine .styles Eigenschaft, die als Styles zugegriffen werden kann [ "Name"]. Daher können Sie dies tun:

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

hatte ich einen ähnlichen Gedanken vor einigen Monaten :) Hinweis für das Recht auf Arbeit, muss Ihr Gitter runat = „server“ werden.

Edit: Sieht aus wie Sie das Netz lesen möchten und verwenden, die ... Wenn Sie einen .CssStyle und Stylesheet (CSS) verwenden, werden Sie eine HTTP zu dieser CSS-Datei zu tun haben, bekommen und es selbst zu analysieren.

Andere Tipps

Sie müßten die CSS-Datei selbst analysieren, und IIRC gibt es keinen CSS-Datei-Parser in .NET Framework aus der Box. Allerdings gibt es eine freie finden Sie hier:

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

Sie sollten dann in der Lage sein, dies zu verwenden, um die CSS-Datei zu analysieren. Von dort aus sollten Sie in der Lage sein, den Stil und den Wert zu erhalten und es auf Ihre Daten Raster anwenden.

Ich schrieb etwas in diese eine Weile zurück Linien. Dabei handelte es sich einen Httphandler mit den CSS-Dateien zu behandeln, eine Änderung der IIS-Konfiguration erhalten asp.net die Anforderungen für die CSS-Dateien zu empfangen, und eine einfache XML-Datei-Struktur, die meine Farbdefinitionen enthalten. Aber Sie haben mit einer Datenbank getan, die zu fein ist.

Dann in der CSS ich so etwas wie dieses hatte ...

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

mit meiner xml definiert die Werte für Taste-Hintergrund-Farbe und Button-Text-Farbe. Ich benutzen reguläre Ausdruck Textersetzung die CSS-Datei ersetzt wird in den entsprechenden Werten aus der XML-Datei zu verarbeiten.

Ich bin sicher, dass Sie einige dieser Ideen nehmen und kombinieren Sie es mit Ihren vorhandenen Code um den gewünschten Effekt zu erhalten. Sie werden natürlich müssen mit Caching und Änderungen in Ihrer Datenbank / XML-Datei behandeln.

Ich hoffe, das hilft.

Wenn Sie irgendwelche Hinweise auf irgendetwas davon benötigen, dann bin ich sicher, dass ich einige Beispiel-Code ausgraben kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top