Identify top 5 rows of a DataGrid

Posted on 2006-03-21
Last Modified: 2008-02-01
I have the following DataGrid:

<asp:DataGrid id="dgNewsArticles" AutoGenerateColumns="False" CellPadding="1" DataKeyField="RecID"
ShowFooter="false" runat="server">
      <asp:BoundColumn HeaderText="RecID" DataField="RecID" Visible="False" />
      <asp:BoundColumn DataField="DisplayAs" HeaderText="News Article" />
      <asp:BoundColumn DataField="PostDate" HeaderText="Post Date" />
      <asp:HyperLinkColumn ItemStyle-Width="50px" DataNavigateUrlField="RecID" DataNavigateUrlFormatString="editFile.aspx?RecID={0}" Text="Edit" />
      <asp:HyperLinkColumn ItemStyle-Width="50px" DataNavigateUrlField="RecID" DataNavigateUrlFormatString="deleteFile.aspx?RecID={0}" Text="Delete" />

When displaying this grid on the screen, I would like to note the top 5 rows by adding a column at the beginning with an icon in it.

Any thoughts?
Question by:russomr
    LVL 22

    Expert Comment

    Hi russomr,

    First of all, you can't really make a column specifically for the first 5 rows, but you can generate a column for the entire Grid and then only show an image for the first 5 rows.  There are some alternatives, but I think this is the easiest...

    Now there are multiple ways to implement this following solution, but try it this way first, add a new column:

            <asp:Image runat="server" Visible='<%# IIf(Container.ItemIndex <= 4, True, False) %>' ImageUrl="myGraphic.jpg" id="Image1" />

    This creates a new column and only shows the image for the first 5 rows, otherwise it hides the Image (doesn't render it).  Good luck!

    -- Jason

    Author Comment

    I get this as an error:

    The name 'IIf' does not exist in the current context

    Am I missing a namespace for the IIF?
    LVL 7

    Expert Comment

    its just an if statement....

    IIf(Container.ItemIndex <= 4, True, False) =

    if (Container.ItemIndex <= 4) then
    LVL 22

    Expert Comment

    Are you using C#?  If so... this would be it:

    <asp:Image runat="server" Visible='<%# ( (bool) ((int)Container.ItemIndex) <= 4 ? true : false) %>' ImageUrl="myGraphic.jpg" id="Image1" />

    Or something close to that... I do just about everything in VB.NET... but that will work.

    -- Jason

    Author Comment

    I understand the concept, I just can't get it working.  It looks like IIf is a function that you are referencing.  Where is that function located?  Or where do I create that function so that it can be referenced?

    Am I overthinking this?

    Author Comment

    Sorry, I just can't get this to work.  I keep getting

    Cannot convert type 'int' to 'bool'

    I am a VB programmer that is just now getting into C#, so syntax is not my cup of tea.

    Is there a different way to accomplish what I'm going for?  I see how the above would work, but if I can't actually get it working, it does me no good.
    LVL 22

    Accepted Solution


    The IIf is specific to VB.  So you'll have to go another route, either with the ternary operator that I gave you, or let's go another route, unless some C# expert can assist us...

    We'll use a Function:

    public bool ShowImage(int index) {
        if (index <= 4)
            return true;
            return false;

    <asp:Image runat="server" Visible='<%# ShowImage(Container.ItemIndex) %>' ImageUrl="myGraphic.jpg" id="Image1" />

    -- Jason

    Author Comment

    Works!  Thank you.  Sorry for being such a pain.

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    How your wiki can always stay up-to-date

    Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
    - Increase transparency
    - Onboard new hires faster
    - Access from mobile/offline

    Suggested Solutions

    ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
    A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
    It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
    This video discusses moving either the default database or any database to a new volume.

    760 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    8 Experts available now in Live!

    Get 1:1 Help Now