2009-03-03 75 views
1

在我們的應用程序中,我們有樣式表來定義常見的顏色等......我寫了一個快速而髒的函數,從存儲過程中獲取數據集,刪除不想列的列顯示,將其填充到程序生成的DataGrid中,設置DataGrid的樣式,然後將其導出到Excel。每個人都喜歡Excel輸出中的顏色(Gasp!它們與DataGrid顏色相匹配,等等等等)。

我最後想要補充一點是,我想以編程方式訪問樣式,並從中獲取顏色代碼和其他項目(.IntranetGridHead)而不是對它們進行硬編碼,這就是我現在正在做的。

以編程方式訪問樣式以獲取值

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; 

顯然那麼只要該公司經過另一個「品牌重塑」和樣式表值的變化,Excel的顏色會自動匹配,我會得到一個大的(在後面||餅乾PAT)。

從C#知道比我更多的人(這將是你們中的大多數人)的任何想法?
謝謝,
邁克爾

回答

2

所有Web.UI.Control對象都有一個.Styles屬性,它可以作爲樣式[「Name」]進行訪問。因此,你可以這樣做:

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

我幾個月前有過類似的想法:)請注意這個工作的權利,網格必須的Runat =「服務器」。

編輯: 看起來像你想閱讀網格和使用...如果你使用.CssStyle和樣式表(.css),你必須做一個HTTP GET到該CSS文件並自己解析它。

1

你將不得不解析CSS文件自己,IIRC沒有在.NET框架沒有CSS文件分析器開箱。然而,有一個自由的,你可以在這裏找到:

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

然後,您應該能夠用它來解析CSS文件。從那裏你應該能夠獲得風格和價值,並將其應用到你的數據網格。

1

我寫了一些東西沿着這些線回來。它涉及一個HttpHandler來處理CSS文件,更改IIS配置以使asp.net接收CSS文件的請求,以及一個包含我的顏色定義的簡單xml文件結構。但是你已經用數據庫完成了,這也沒關係。

然後在CSS我有這樣的事情......

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

與我的XML定義按鈕的背景顏色和按鈕文字的顏色值。我使用正則表達式文本替換處理CSS文件替換xml文件中的相關值。

我相信你可以採取一些想法,並將其與您現有的代碼結合起來,以獲得預期的效果。您當然需要處理緩存和對數據庫/ xml文件的更改。

希望有所幫助。

如果你需要任何指針,那麼我確定我可以挖出一些示例代碼。