2009-12-01 57 views
1

我有一個ASP.NET 2.0數據網格,像這樣:如何根據數據網格的標題或列設置數據網格中單元格的信息?

<asp:DataGrid 
    runat="server" 
    ID="_customerTable" 
    CssClass="gridDisplay" 
    HeaderStyle-CssClass="headerRow" 
    AutoGenerateColumns="False" 
> 
    <Columns> 
     <asp:TemplateColumn HeaderText="First Name"> 
      <ItemTemplate> 
       <%# DataBinder.Eval(Container.DataItem, "FirstName") %> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn HeaderText="Last Name"> 
      <ItemTemplate> 
       <%# DataBinder.Eval(Container.DataItem, "LastName") %> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn HeaderText="Address 1"> 
      <ItemTemplate> 
       <%# DataBinder.Eval(Container.DataItem, "Address1") %> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn HeaderText="Address 2"> 
      <ItemTemplate> 
       <%# DataBinder.Eval(Container.DataItem, "Address2") %> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
    </Columns> 
</asp:DataGrid> 

的問題是,我需要設置爲滿足在列特定標準細胞的CssClass。我似乎可以弄清楚的最好方法是一個相當醜陋的方法 - 要麼專門做e.Item.Cells [0] ... [3]爲每一列,或設置ItemStyle-CssClass =「firstName」...「address2」,然後根據我的條件和單元格的cssclass是否匹配更新單元格的cssclass。

雖然這看起來像一個非常醜陋的解決方案,所以我寧願更好地提供任何建議 - 如果存在的話。

回答

0

不知道你的標準是,但如果你有這些方針的東西:

<asp:DataGrid 
    ... 
    <Columns> 
     <asp:TemplateColumn HeaderText="First Name"> 
      <ItemTemplate> 
       <asp:Label ID='lbl' 
        Text='<%# DataBinder.Eval(Container.DataItem, "FirstName") %>' 
        CssClass= "%conditional_expression%" /> 
      </ItemTemplate> 
     </asp:TemplateColumn>     
    ... 
    </Columns> 
</asp:DataGrid> 

假設你有CSS類txtBlue和txtPink,而標準是基於性別列,那麼conditional_expression可能是這樣的:

<% DataBinder.Eval(Container.DataItem, "Gender") == "Male" ? "txtBlue" : "txtPink" %> 

不確定以上是有效的語法,只是一個建議。

+1

這適用於文本樣式,但對於背景,輪廓,光標,垂直對齊等樣式,您真的需要表格單元格本身的樣式,而不是單元格內的跨度。 – Tadmas 2009-12-04 13:55:02

+0

哎呀,我的意思是邊框,不是輪廓。 :) – Tadmas 2009-12-04 13:58:12