diff --git a/src/TcoData/src/TcoDataConnector/pex/IDataExchangeOperations.cs b/src/TcoData/src/TcoDataConnector/pex/IDataExchangeOperations.cs
new file mode 100644
index 000000000..24f28fcb7
--- /dev/null
+++ b/src/TcoData/src/TcoDataConnector/pex/IDataExchangeOperations.cs
@@ -0,0 +1,13 @@
+namespace TcoData
+{
+ ///
+ /// An interaface which grants access to certain operations in DataExchange viewmodel,
+ /// like searching by id, invoking search or filling the searchbox
+ ///
+ public interface IDataExchangeOperations
+ {
+ object SelectedRecord { get; }
+ string FilterByID { get; set; }
+ void InvokeSearch();
+ }
+}
\ No newline at end of file
diff --git a/src/TcoData/src/TcoDataConnector/pex/TcoDataExchange/TcoDataExchange.cs b/src/TcoData/src/TcoDataConnector/pex/TcoDataExchange/TcoDataExchange.cs
index 318f626f9..7427e8af0 100644
--- a/src/TcoData/src/TcoDataConnector/pex/TcoDataExchange/TcoDataExchange.cs
+++ b/src/TcoData/src/TcoDataConnector/pex/TcoDataExchange/TcoDataExchange.cs
@@ -8,6 +8,8 @@ namespace TcoData
public partial class TcoDataExchange
{
+ /// An interaface which grants access to certain operations in DataExchange viewmodel, like searching by id, invoking search or filling the searchbox
+ public IDataExchangeOperations DataExchangeOperations { get; set; }
private dynamic _onliner;
protected dynamic Onliner
@@ -199,5 +201,7 @@ protected IVortexObject OnlinerVortex
return _onlinerVortex;
}
}
+
+
}
}
diff --git a/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataView.xaml b/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataView.xaml
index 5b54be34a..431bd5cc1 100644
--- a/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataView.xaml
+++ b/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataView.xaml
@@ -26,7 +26,7 @@
-
+
@@ -38,82 +38,90 @@
Margin="0,5,0,5"
Visibility="{Binding Mode, Mode=OneWay, Converter={wpf:ModeConverter}, ConverterParameter=Display}"
HorizontalAlignment="Stretch" />
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataViewModel.cs b/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataViewModel.cs
index 0d7634abe..2be2b763d 100644
--- a/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataViewModel.cs
+++ b/src/TcoData/src/Wpf/TcoData.Wpf/Data/Data/DataViewModel.cs
@@ -19,7 +19,7 @@
namespace TcoData
{
- public class DataViewModel : Vortex.Presentation.Wpf.BindableBase, FunctionAvailability where T : IBrowsableDataObject, new()
+ public class DataViewModel : Vortex.Presentation.Wpf.BindableBase, IDataExchangeOperations, FunctionAvailability where T : IBrowsableDataObject, new()
{
string filterByID;
@@ -39,6 +39,7 @@ namespace TcoData
public DataViewModel(IRepository repository, TcoDataExchange dataExchange) : base()
{
this.DataExchange = dataExchange;
+ this.DataExchange.DataExchangeOperations = this;
DataBrowser = CreateBrowsable(repository);
StartCreateNewCommand = new RelayCommand(p => StartCreatingNew(), _ => this.Mode == ViewMode.Display, () => LogCommand(nameof(StartCreateNewCommand)));
@@ -354,6 +355,19 @@ void LoadFromPlc()
}, "", () => MessageBox.Show($"{strings.WouldYouLikeToGetFromPLC}", "Data", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes);
}
+ public void InvokeSearch() => ExternalSearch();
+ private void ExternalSearch()
+ {
+ Filter();
+
+ if (DataBrowser.GetRecords(p => p._EntityId == FilterByID).Any() && SearchMode== eSearchMode.Exact)
+ {
+ var plain = DataBrowser.FindById(FilterByID);
+ ((dynamic)DataExchange)._data.CopyPlainToShadow(plain);
+ SelectedRecord = plain;
+ }
+ }
+
public ICommand ExportCommand { get; }
public ICommand ImportCommand { get; }
diff --git a/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/Examples/SandboxContext.TcPOU b/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/Examples/SandboxContext.TcPOU
index e33873367..72a372e7f 100644
--- a/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/Examples/SandboxContext.TcPOU
+++ b/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/Examples/SandboxContext.TcPOU
@@ -1,5 +1,5 @@
-
+
@@ -12,6 +12,8 @@ VAR
_state : eExamplesStates;
recordId_1 : STRING;
recordId_2 : STRING;
+ _invokeSearch : BOOL;
+ _filteringById :STRING;
END_VAR]]>
diff --git a/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/MAIN.TcPOU b/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/MAIN.TcPOU
index 7db386264..c5f32430e 100644
--- a/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/MAIN.TcPOU
+++ b/src/TcoData/src/XAE/XAE/TcoDataTests/POUs/MAIN.TcPOU
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/src/TcoData/src/XAE/XAE/XAETcoData.tsproj b/src/TcoData/src/XAE/XAE/XAETcoData.tsproj
index d4193f4cc..abebcc269 100644
--- a/src/TcoData/src/XAE/XAE/XAETcoData.tsproj
+++ b/src/TcoData/src/XAE/XAE/XAETcoData.tsproj
@@ -1,10 +1,7 @@
-
-
+
+
-
-
-
PlcTask
diff --git a/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml b/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml
index 63cb45998..d1bf1ab69 100644
--- a/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml
+++ b/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml
@@ -6,19 +6,22 @@
xmlns:local="clr-namespace:Sandbox.TcoData.Wpf"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vortex="http://vortex.mts/xaml"
- Width="800"
+ Width="800"
Height="450"
mc:Ignorable="d"
Title="MainWindow">
-
+
+
+
+
@@ -37,7 +40,9 @@
-->
+
+
diff --git a/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml.cs b/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml.cs
index 72dc13ccb..b0b55f087 100644
--- a/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml.cs
+++ b/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindow.xaml.cs
@@ -24,5 +24,11 @@ public MainWindow()
{
InitializeComponent();
}
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ var dataContext = this.DataContext as MainWindowViewModel;
+ dataContext.ExternalInvokeSearchTest();
+ }
}
}
diff --git a/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindowViewModel.cs b/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindowViewModel.cs
index 3c402a88a..30577582c 100644
--- a/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindowViewModel.cs
+++ b/src/TcoData/tests/Sandbox.TcoData.Wpf/MainWindowViewModel.cs
@@ -9,9 +9,15 @@ public class MainWindowViewModel
{
public MainWindowViewModel()
{
-
+
+ }
+
+ public void ExternalInvokeSearchTest()
+ {
+ Plc.MAIN.sandbox.DataManager.DataExchangeOperations.FilterByID = "TEST";
+ Plc.MAIN.sandbox.DataManager.DataExchangeOperations.InvokeSearch();
}
public TcoDataTestsTwinController Plc { get; } = TcoDataTests.Entry.TcoDataTests;