Click here to Skip to main content
15,886,518 members
Articles / Web Development / ASP.NET

GridThemes

Rate me:
Please Sign up or sign in to vote.
4.92/5 (51 votes)
4 Mar 2007CPOL10 min read 168.3K   1.5K   161  
Combining a BuildProvider and IExtenderProvider to create a declarative framework for conditional formatting in ASP.NET GridViews.
<%@ Page Language="C#" MasterPageFile="~/SampleGridThemes.master"%>

<%@ Register Assembly="GridThemes" Namespace="UNLV.IAP.GridThemes" TagPrefix="cc1" %>

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="CreateDataSource"
        TypeName="DataProvider">
        <SelectParameters>
            <asp:Parameter DefaultValue="5" Name="numValueColumns" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
    <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1" BorderColor="Silver" BorderStyle="Solid" BorderWidth="1px" CellPadding="4" GridLines="None">
    </asp:GridView>
    <br />
    In addition to the names of TableCell properties, the attributes of the &lt;Apply&gt; tag
    may include tokens following the syntax <code><i>property</i>Expression</code>, where <i>property</i>
    is a valid TableCell property name.  These "expression" attributes are treated as 
    literal code expressions in the syntax of the project language.  For example, to supply
    a code expression for the <code>Text</code> property, include a <code>TextExpression</code>
    attribute in the &lt;Apply&gt; tag.
    <br />
    <br />
    In this example, line numbering and numeric formatting 
    is applied using the <code>string.Format()</code>
    method as a <code>TextExpression</code>.  For numbers, a boolean expression 
    (CellValue greater than 8000) is used to set the Font-Bold property.
<pre>
  &lt;theme id="Conditions4" title="Sample:  Expression attributes"&gt;
    &lt;DataRow&gt;
      &lt;If test="CellIndex == 0"&gt;
        &lt;Apply textExpression='string.Format("{0}: {1}", RowIndex + 1, CellText)' 
               backColor='#EFEFEF'
               width='120px'/&gt;
        
        &lt;Else&gt;
          &lt;Apply textExpression='string.Format("{0:#,##0.0}", CellValue)' 
                 font-boldExpression='(CellValue &gt; 8000)'
                 horizontalAlign="right"
                 width="60px"
                 /&gt;
         &lt;/Else&gt;
      &lt;/If&gt;
    &lt;/DataRow&gt;
    
    &lt;Header&gt;
      &lt;apply backColor="#CCCCCC" /&gt;
    &lt;/Header&gt;
  &lt;/theme&gt;
</pre>
    
    <br />
    <br />
    <cc1:gridthemesextender id="GridThemesExtender1" runat="server">
        <Props>
            <cc1:ExtenderProperties GridID="GridView1" GridTheme="Sample:  Expression attributes" />
        </Props>
    </cc1:gridthemesextender>
    
</asp:Content>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
University of Nevada, Las Vegas
United States United States
With a background in education, music, application development, institutional research, data governance, and business intelligence, I work for the University of Nevada, Las Vegas helping to derive useful information from institutional data. It's an old picture, but one of my favorites.

Comments and Discussions