We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you a podcast all about Citrix Workspace, moving to the cloud, and analytics & intelligence. Episode 2 coming soon!Listen Now

x

Identify top 5 rows of a DataGrid

russomr
russomr asked
on
Medium Priority
237 Views
Last Modified: 2008-02-01
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?
Comment
Watch Question

Top Expert 2006

Commented:
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

Author

Commented:
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
Top Expert 2006

Commented:
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

Commented:
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

Commented:
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.
Top Expert 2006
Commented:
russomr,

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;
    else
        return false;
}

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

-- Jason

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:
Works!  Thank you.  Sorry for being such a pain.
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.