Link to home
Start Free TrialLog in
Avatar of russomr
russomr

asked on

Identify top 5 rows of a DataGrid

I have the following DataGrid:

<asp:DataGrid id="dgNewsArticles" AutoGenerateColumns="False" CellPadding="1" DataKeyField="RecID"
ShowFooter="false" runat="server">
<Columns>
      <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" />
</Columns>
</asp:DataGrid>

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?
Avatar of Jason Scolaro
Jason Scolaro
Flag of United States of America image

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:TemplateColumn>
    <ItemTemplate>
        <asp:Image runat="server" Visible='<%# IIf(Container.ItemIndex <= 4, True, False) %>' ImageUrl="myGraphic.jpg" id="Image1" />
    </ItemTemplate>
</asp:TemplateColumn>

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
Avatar of russomr
russomr

ASKER

I get this as an error:

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

Am I missing a namespace for the IIF?
its just an if statement....

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

if (Container.ItemIndex <= 4) then
         true
else
          false
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
Avatar of russomr

ASKER

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?
Avatar of russomr

ASKER

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.
ASKER CERTIFIED SOLUTION
Avatar of Jason Scolaro
Jason Scolaro
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of russomr

ASKER

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