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.
You need to use a
DataViewif you want to do that. (You will need to useDataSetExtensionsto leverage the LINQ.)You also need to define the following static extension method:
Note that the
supportedFormatsarray 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.