Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7710739
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T01:12:04+00:00 2026-06-01T01:12:04+00:00

I have DataGridView and I set DataSource of datagridview by using DataTables. DataTable dt

  • 0

I have DataGridView and I set DataSource of datagridview by using DataTables.

DataTable dt = new DataTable();

        dt.Columns.Add("Image",typeof(Bitmap));
        dt.Columns.Add("Col2", typeof(string));
        dt.Columns.Add("Col3", typeof(string));
        dt.Columns.Add("Col4", typeof(string));
        dt.Columns.Add("Col5", typeof(string));

        int currentrow = 0;
        foreach (Dev d in Devs)
        {
            dt.Rows.Add(dt.NewRow());
            Bitmap bmp = Test(d);
            dt.Rows[currentrow][0] = bmp;
            dt.Rows[currentrow][1] = d .ID;
            dt.Rows[currentrow][2] = d .Name;
            dt.Rows[currentrow][3] = d .Country;
            dt.Rows[currentrow][4] = d .State;
            currentrow++; 
        }
       datagridview.DataSource = dt;

This code sort when my column type of string, but i want to sort based on image also. I want to click on image column and it should sort based on images. There are three types of image only, so i want same image should be together for easier display purpose.
I searched on but could not find any solution yet.
Any thing that can guide me to right direction?

Got Error when i Tried something like this

 datagridview.Sort(dgvFusePTW.Columns[0], ListSortDirection.Ascending);

Error : Data-bound DataGridView control can only be sorted on data-bound columns.

UPDATE :
I added one more column. It is hidden, when use click on Image column (1st one), it fires ColumnHeaderMouseClick events. Added Logic there to sort hidden column.
It is just work around which one clicked for me.

Thanks you,

L.E.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T01:12:05+00:00Added an answer on June 1, 2026 at 1:12 am

    You need to use a DataView if you want to do that. (You will need to use DataSetExtensions to leverage the LINQ.)

    // the Bitmap class has the RawFormat property that tells whether
    // it's JPG, PNG, BMP, etc etc
    DataView dv = dt.AsEnumerable()
        .OrderBy(c => c.Field<Bitmap>("Image").GetImageOrder()) // sort by image type
        .ThenBy(d => d.Field<string>("Col2")) // then sort by ID...
        .AsDataView();
    
    // take the dataview and bind...
    datagridview.DataSource = dv;
    

    You also need to define the following static extension method:

    public static class ImageHelper
    {
        private static ImageFormat[] supportedFormats = new ImageFormat[]
        {
            ImageFormat.Bmp,
            ImageFormat.Gif,
            ImageFormat.Jpeg,
            ImageFormat.Png,
            ImageFormat.Tiff,
            ImageFormat.Wmf,
            ImageFormat.Emf,
            ImageFormat.Exif
        };
    
        public static int GetImageOrder(this Image target)
        {
            for (int i = 0; i < supportedFormats.Length; i++)
            {
                if (target.RawFormat.Equals(supportedFormats[i]))
                {
                    return i;
                }
            }
    
            // the image format is not within our supported formats array:
            // just order it to the very end
            return 9999;
        }
    }
    

    Note that the supportedFormats array has an arbitrary sort order that I just thought up — you can reorder the array any way you want and the images should reorder as you wish.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a DataGridView with the DataSource set to List<myClass> However, the new row
So, I have a DataGridView using as datasource a BindingList DataGridView.DataSource = new BindingList<Car>{...}
I have a DataGridView with its datasource set to a generic list of custom
I have a DataGridView set up with the following columns: Teacher, Subject, Date, Period.
I have a DataGridView, which is not set to ReadOnly. None of its columns
I've got some Columns in a DataGridView that have their Binding property set to
I have a form that contains dataGridView, whose coloumn are set to dgrv1.Width =dgrv1.Columns.GetColumnsWidth(DataGridViewElementStates.Visible)+20;
I have a DataGridView which allows the user to add a new object to
I have a DataTable, fully populated, which I want to set to a DatagridView:
I have a DataTable which is bound to DataGridView . DataTable has several columns

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.