Skip to content

Commit 88086e4

Browse files
committed
Reworked to fix Documents DataGridView refresh issues. #76
Signed-off-by: Robert F. Frasca <[email protected]>
1 parent 77b7188 commit 88086e4

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

src/PDFKeeper.Core/Extensions/DataTableExtension.cs

+13-6
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,21 @@ internal static class DataTableExtension
3838
internal static bool Compare(this DataTable dataTable1, DataTable dataTable2)
3939
{
4040
var diffsExist = false;
41-
var set1 = new HashSet<string>(dataTable1.AsEnumerable().Select(row => string.Join(
41+
if (dataTable1.Rows.Count.Equals(dataTable2.Rows.Count))
42+
{
43+
var set1 = new HashSet<string>(dataTable1.AsEnumerable().Select(row => string.Join(
4244
",",
4345
row.ItemArray)));
44-
var set2 = new HashSet<string>(dataTable2.AsEnumerable().Select(row => string.Join(
45-
",",
46-
row.ItemArray)));
47-
set1.Except(set2).ToList().ForEach(diff => diffsExist = true);
48-
set2.Except(set2).ToList().ForEach(diff => diffsExist = true);
46+
var set2 = new HashSet<string>(dataTable2.AsEnumerable().Select(row => string.Join(
47+
",",
48+
row.ItemArray)));
49+
set1.Except(set2).ToList().ForEach(diff => diffsExist = true);
50+
set2.Except(set2).ToList().ForEach(diff => diffsExist = true);
51+
}
52+
else
53+
{
54+
diffsExist = true;
55+
}
4956
return diffsExist;
5057
}
5158
}

src/PDFKeeper.Core/Presenters/MainPresenter.cs

+12-11
Original file line numberDiff line numberDiff line change
@@ -1208,7 +1208,7 @@ private void SetStateForNotesChanged(bool notesChanged, bool canUndo)
12081208

12091209
/// <summary>
12101210
/// Gets a list of documents based on the properties in
1211-
/// ApplicationGlobal.FindDocumentsParam
1211+
/// ApplicationGlobal.FindDocumentsParam.
12121212
/// </summary>
12131213
/// <param name="selectCurrentDocument">
12141214
/// Select the current document after getting documents.
@@ -1252,11 +1252,9 @@ private void GetListOfDocuments(bool selectCurrentDocument)
12521252
documents = documentRepository.GetListOfDocuments();
12531253
}
12541254
}
1255-
if (ViewModel.Documents == null)
1256-
{
1257-
ViewModel.Documents = documents;
1258-
}
1259-
else if (documents.Compare(ViewModel.Documents))
1255+
if (selectCurrentDocument &&
1256+
documents.Compare(ViewModel.Documents) ||
1257+
!selectCurrentDocument)
12601258
{
12611259
ViewModel.Documents = documents;
12621260
}
@@ -1267,13 +1265,16 @@ private void GetListOfDocuments(bool selectCurrentDocument)
12671265
}
12681266
finally
12691267
{
1270-
var columnName = ViewModel.Documents.Columns[0].ColumnName;
1271-
foreach (DataRow row in ViewModel.Documents.Rows)
1268+
if (selectCurrentDocument)
12721269
{
1273-
var id = Convert.ToInt32(row[columnName].ToString());
1274-
if (id.Equals(currentDocumentId))
1270+
var columnName = ViewModel.Documents.Columns[0].ColumnName;
1271+
foreach (DataRow row in ViewModel.Documents.Rows)
12751272
{
1276-
ViewModel.CurrentDocumentId = currentDocumentId;
1273+
var id = Convert.ToInt32(row[columnName].ToString());
1274+
if (id.Equals(currentDocumentId))
1275+
{
1276+
ViewModel.CurrentDocumentId = currentDocumentId;
1277+
}
12771278
}
12781279
}
12791280
ViewModel.RefreshingDocumentsImageVisible = false;

0 commit comments

Comments
 (0)