diff --git a/Business/Menus.cs b/Business/Menus.cs index ce6347b..d7f0bc8 100644 --- a/Business/Menus.cs +++ b/Business/Menus.cs @@ -643,6 +643,7 @@ namespace SystemTrayMenu.Business dataTable.Columns.Add(dgv.Columns[0].Name, typeof(Icon)); dataTable.Columns.Add(dgv.Columns[1].Name, typeof(string)); dataTable.Columns.Add("data", typeof(RowData)); + dataTable.Columns.Add("SortIndex"); foreach (RowData rowData in data) { rowData.SetData(rowData, dataTable); diff --git a/UserInterface/Menu.cs b/UserInterface/Menu.cs index c7efc87..a825bdb 100644 --- a/UserInterface/Menu.cs +++ b/UserInterface/Menu.cs @@ -585,10 +585,30 @@ namespace SystemTrayMenu.UserInterface "[{0}] LIKE '%{1}%'", filterField, textBoxSearch.Text); - foreach (DataGridViewRow row in dgv.Rows) + + if (string.IsNullOrEmpty(textBoxSearch.Text)) { - RowData rowData = (RowData)row.Cells[2].Value; - rowData.RowIndex = row.Index; + data.DefaultView.Sort = string.Empty; + } + else + { + string columnSortIndex = "SortIndex"; + + foreach (DataRow row in data.Rows) + { + if (row[1].ToString().StartsWith( + textBoxSearch.Text, + StringComparison.InvariantCultureIgnoreCase)) + { + row[columnSortIndex] = 0; + } + else + { + row[columnSortIndex] = 1; + } + } + + data.DefaultView.Sort = columnSortIndex; } SearchTextChanged.Invoke(this, null);