EDMIService: Property Filtering/Sorting, Handle Empty Results

This commit is contained in:
Jonathan Jenne 2020-12-08 16:42:36 +01:00
parent 4c9abf3b1f
commit 502793aed5
7 changed files with 116 additions and 33 deletions

View File

@ -24,7 +24,7 @@ Partial Class Form1
Private Sub InitializeComponent() Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container() Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1)) Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Dim DockingContainer1 As DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer = New DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer() Dim DockingContainer2 As DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer = New DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer()
Me.DocumentGroup1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.DocumentGroup(Me.components) Me.DocumentGroup1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.DocumentGroup(Me.components)
Me.Document1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.Document(Me.components) Me.Document1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.Document(Me.components)
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl() Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
@ -44,6 +44,10 @@ Partial Class Form1
Me.TextboxDatatableName = New DevExpress.XtraBars.BarEditItem() Me.TextboxDatatableName = New DevExpress.XtraBars.BarEditItem()
Me.RepositoryItemTextEdit2 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit() Me.RepositoryItemTextEdit2 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem()
Me.TextboxDatatableFilter = New DevExpress.XtraBars.BarEditItem()
Me.RepositoryItemTextEdit3 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
Me.TextboxDatatableSort = New DevExpress.XtraBars.BarEditItem()
Me.RepositoryItemTextEdit4 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup4 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup4 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
@ -73,11 +77,14 @@ Partial Class Form1
Me.DockPanel2_Container = New DevExpress.XtraBars.Docking.ControlContainer() Me.DockPanel2_Container = New DevExpress.XtraBars.Docking.ControlContainer()
Me.DocumentViewer1 = New DigitalData.Controls.DocumentViewer.DocumentViewer() Me.DocumentViewer1 = New DigitalData.Controls.DocumentViewer.DocumentViewer()
Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.BarEditItem1 = New DevExpress.XtraBars.BarEditItem()
CType(Me.DocumentGroup1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DocumentGroup1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.Document1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.Document1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit3, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit4, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DocumentManager1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DocumentManager1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.TabbedView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TabbedView1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).BeginInit()
@ -115,14 +122,14 @@ Partial Class Form1
'RibbonControl1 'RibbonControl1
' '
Me.RibbonControl1.ExpandCollapseItem.Id = 0 Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.ButtonSelectFiles, Me.ButtonImportFiles, Me.buttonClearLog, Me.buttonClearFiles, Me.TextboxObjectId, Me.ButtonLoadFile, Me.BarListItem1, Me.BarButtonItem2, Me.BarToggleSwitchItem1, Me.BarDockingMenuItem1, Me.BarMdiChildrenListItem1, Me.BarButtonItem1, Me.TextboxDatatableName, Me.BarButtonItem3}) Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.ButtonSelectFiles, Me.ButtonImportFiles, Me.buttonClearLog, Me.buttonClearFiles, Me.TextboxObjectId, Me.ButtonLoadFile, Me.BarListItem1, Me.BarButtonItem2, Me.BarToggleSwitchItem1, Me.BarDockingMenuItem1, Me.BarMdiChildrenListItem1, Me.BarButtonItem1, Me.TextboxDatatableName, Me.BarButtonItem3, Me.TextboxDatatableFilter, Me.TextboxDatatableSort})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0) Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 17 Me.RibbonControl1.MaxItemId = 19
Me.RibbonControl1.Name = "RibbonControl1" Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.PageHeaderItemLinks.Add(Me.BarDockingMenuItem1) Me.RibbonControl1.PageHeaderItemLinks.Add(Me.BarDockingMenuItem1)
Me.RibbonControl1.PageHeaderItemLinks.Add(Me.BarMdiChildrenListItem1) Me.RibbonControl1.PageHeaderItemLinks.Add(Me.BarMdiChildrenListItem1)
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemTextEdit1, Me.RepositoryItemTextEdit2}) Me.RibbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemTextEdit1, Me.RepositoryItemTextEdit2, Me.RepositoryItemTextEdit3, Me.RepositoryItemTextEdit4})
Me.RibbonControl1.Size = New System.Drawing.Size(1310, 158) Me.RibbonControl1.Size = New System.Drawing.Size(1310, 158)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1 Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
' '
@ -218,6 +225,7 @@ Partial Class Form1
' '
Me.TextboxDatatableName.Caption = "Datatable Name" Me.TextboxDatatableName.Caption = "Datatable Name"
Me.TextboxDatatableName.Edit = Me.RepositoryItemTextEdit2 Me.TextboxDatatableName.Edit = Me.RepositoryItemTextEdit2
Me.TextboxDatatableName.EditWidth = 100
Me.TextboxDatatableName.Id = 15 Me.TextboxDatatableName.Id = 15
Me.TextboxDatatableName.ImageOptions.SvgImage = CType(resources.GetObject("TextboxDatatableName.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.TextboxDatatableName.ImageOptions.SvgImage = CType(resources.GetObject("TextboxDatatableName.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.TextboxDatatableName.Name = "TextboxDatatableName" Me.TextboxDatatableName.Name = "TextboxDatatableName"
@ -234,6 +242,32 @@ Partial Class Form1
Me.BarButtonItem3.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem3.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.BarButtonItem3.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem3.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem3.Name = "BarButtonItem3" Me.BarButtonItem3.Name = "BarButtonItem3"
' '
'TextboxDatatableFilter
'
Me.TextboxDatatableFilter.Caption = "Filter Expr."
Me.TextboxDatatableFilter.Edit = Me.RepositoryItemTextEdit3
Me.TextboxDatatableFilter.EditWidth = 100
Me.TextboxDatatableFilter.Id = 17
Me.TextboxDatatableFilter.Name = "TextboxDatatableFilter"
'
'RepositoryItemTextEdit3
'
Me.RepositoryItemTextEdit3.AutoHeight = False
Me.RepositoryItemTextEdit3.Name = "RepositoryItemTextEdit3"
'
'TextboxDatatableSort
'
Me.TextboxDatatableSort.Caption = "Sort Expr."
Me.TextboxDatatableSort.Edit = Me.RepositoryItemTextEdit4
Me.TextboxDatatableSort.EditWidth = 100
Me.TextboxDatatableSort.Id = 18
Me.TextboxDatatableSort.Name = "TextboxDatatableSort"
'
'RepositoryItemTextEdit4
'
Me.RepositoryItemTextEdit4.AutoHeight = False
Me.RepositoryItemTextEdit4.Name = "RepositoryItemTextEdit4"
'
'RibbonPage1 'RibbonPage1
' '
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup4, Me.RibbonPageGroup3, Me.RibbonPageGroup2}) Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup4, Me.RibbonPageGroup3, Me.RibbonPageGroup2})
@ -267,6 +301,8 @@ Partial Class Form1
'RibbonPageGroup2 'RibbonPageGroup2
' '
Me.RibbonPageGroup2.ItemLinks.Add(Me.TextboxDatatableName) Me.RibbonPageGroup2.ItemLinks.Add(Me.TextboxDatatableName)
Me.RibbonPageGroup2.ItemLinks.Add(Me.TextboxDatatableFilter)
Me.RibbonPageGroup2.ItemLinks.Add(Me.TextboxDatatableSort)
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem3) Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem3)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2" Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "Retrieve Datatable" Me.RibbonPageGroup2.Text = "Retrieve Datatable"
@ -294,8 +330,8 @@ Partial Class Form1
' '
Me.TabbedView1.DocumentGroups.AddRange(New DevExpress.XtraBars.Docking2010.Views.Tabbed.DocumentGroup() {Me.DocumentGroup1}) Me.TabbedView1.DocumentGroups.AddRange(New DevExpress.XtraBars.Docking2010.Views.Tabbed.DocumentGroup() {Me.DocumentGroup1})
Me.TabbedView1.Documents.AddRange(New DevExpress.XtraBars.Docking2010.Views.BaseDocument() {Me.Document1}) Me.TabbedView1.Documents.AddRange(New DevExpress.XtraBars.Docking2010.Views.BaseDocument() {Me.Document1})
DockingContainer1.Element = Me.DocumentGroup1 DockingContainer2.Element = Me.DocumentGroup1
Me.TabbedView1.RootContainer.Nodes.AddRange(New DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer() {DockingContainer1}) Me.TabbedView1.RootContainer.Nodes.AddRange(New DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer() {DockingContainer2})
' '
'DockManager1 'DockManager1
' '
@ -481,6 +517,15 @@ Partial Class Form1
' '
Me.Timer1.Interval = 3000 Me.Timer1.Interval = 3000
' '
'BarEditItem1
'
Me.BarEditItem1.Caption = "Datatable Name"
Me.BarEditItem1.Edit = Me.RepositoryItemTextEdit2
Me.BarEditItem1.EditWidth = 100
Me.BarEditItem1.Id = 15
Me.BarEditItem1.ImageOptions.SvgImage = CType(resources.GetObject("BarEditItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarEditItem1.Name = "BarEditItem1"
'
'Form1 'Form1
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@ -499,6 +544,8 @@ Partial Class Form1
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit3, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit4, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DocumentManager1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.DocumentManager1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.TabbedView1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TabbedView1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).EndInit()
@ -569,4 +616,9 @@ Partial Class Form1
Friend WithEvents RepositoryItemTextEdit2 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit Friend WithEvents RepositoryItemTextEdit2 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents TextboxDatatableFilter As DevExpress.XtraBars.BarEditItem
Friend WithEvents RepositoryItemTextEdit3 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
Friend WithEvents TextboxDatatableSort As DevExpress.XtraBars.BarEditItem
Friend WithEvents RepositoryItemTextEdit4 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
Friend WithEvents BarEditItem1 As DevExpress.XtraBars.BarEditItem
End Class End Class

View File

@ -341,4 +341,30 @@
<metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>453, 17</value> <value>453, 17</value>
</metadata> </metadata>
<data name="BarEditItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGkEAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MTYgMTYiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
R3JlZW57ZmlsbDojMDM5QzIzO30KCS5XaGl0ZXtmaWxsOiNGRkZGRkY7fQoJLnN0MHtvcGFjaXR5OjAu
Njt9Cgkuc3Qxe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTE1LDFIMUMwLjUsMSww
LDEuNSwwLDJ2MTJjMCwwLjUsMC41LDEsMSwxaDE0YzAuNSwwLDEtMC41LDEtMVYyQzE2LDEuNSwxNS41
LDEsMTUsMXogTTE1LDE0SDFWMmgxNFYxNHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTAs
NVYyYzAtMC41LDAuNS0xLDEtMWgxNGMwLjYsMCwxLDAuNSwxLDF2M0gweiIgY2xhc3M9IkdyZWVuIiAv
Pg0KICA8ZyBpZD0iTGF5ZXJfMiIgY2xhc3M9InN0MCI+DQogICAgPHJlY3QgeD0iMSIgeT0iMiIgd2lk
dGg9IjE0IiBoZWlnaHQ9IjIiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IldoaXRlIiAvPg0KICA8L2c+DQog
IDxyZWN0IHg9IjEiIHk9IjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSI5IiByeD0iMCIgcnk9IjAiIGNsYXNz
PSJXaGl0ZSIgLz4NCiAgPHBhdGggZD0iTTUsMTJWN2gxdjVINXoiIGNsYXNzPSJCbGFjayIgLz4NCiAg
PHBhdGggZD0iTTExLDEyaC0xbDAtMC42QzkuOCwxMS42LDkuNSwxMiw4LjcsMTJjLTAuNSwwLTAuOS0w
LjItMS4yLTAuNUM3LjIsMTEuMiw3LDEwLjcsNywxMC4xQzcsOS41LDcuMiw5LDcuNSw4LjcgIGMwLjMt
MC4zLDAuNy0wLjUsMS4yLTAuNXMwLjksMC4yLDEuMiwwLjVWN0gxMVYxMnogTTguMSwxMC4xYzAsMC40
LDAsMS4yLDAuOSwxLjJjMC44LDAsMC45LTAuOCwwLjktMS4xQzkuOSw5LjgsOS44LDksOSw5ICBDOC4z
LDksOC4xLDkuNyw4LjEsMTAuMXoiIGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
</value>
</data>
</root> </root>

View File

@ -224,10 +224,17 @@ Public Class Form1
End If End If
Dim oDatatableName As String = TextboxDatatableName.EditValue Dim oDatatableName As String = TextboxDatatableName.EditValue
Dim oResponse As DataTable = Await _Client.GetDatatableByNameAsync(oDatatableName) Dim oSortExpression As String = TextboxDatatableSort.EditValue
Dim oFilterExpression As String = TextboxDatatableFilter.EditValue
Dim oResponse As TableResult = Await _Client.GetDatatableByNameAsync(oDatatableName, oFilterExpression, oSortExpression)
oSWTotal.Stop() oSWTotal.Stop()
AddLogMessage($"DataTable [{oResponse.TableName}] loaded: [{FormatTime(oSWTotal.ElapsedMilliseconds)}]")
If oResponse.OK Then
AddLogMessage($"DataTable [{oDatatableName}] loaded: [{FormatTime(oSWTotal.ElapsedMilliseconds)}]")
Else
AddLogMessage($"DataTable [{oDatatableName}] could not be loaded. Error: {oResponse.ErrorMessage}")
End If
Catch ex As FaultException Catch ex As FaultException
MsgBox(ex.Reason.ToString, MsgBoxStyle.Critical, "Error from Service") MsgBox(ex.Reason.ToString, MsgBoxStyle.Critical, "Error from Service")
_Client.Reconnect() _Client.Reconnect()

View File

@ -131,15 +131,10 @@ Public Class Client
End Try End Try
End Function End Function
Public Async Function GetDatatableByNameAsync(DatatableName As String) As Task(Of DataTable) Public Async Function GetDatatableByNameAsync(DatatableName As String, Optional FilterExpression As String = "", Optional SortByColumn As String = "") As Task(Of TableResult)
Try Try
Dim oResponse = Await _channel.ReturnDatatableFromCacheAsync(DatatableName) Dim oResponse = Await _channel.ReturnDatatableFromCacheAsync(DatatableName, FilterExpression, SortByColumn)
Return oResponse
If oResponse.OK Then
Return oResponse.Table
Else
Return Nothing
End If
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _logger.Error(ex)
Throw ex Throw ex

View File

@ -18,6 +18,8 @@
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="FilterExpression" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="SortByColumn" nillable="true" type="xs:string" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>

View File

@ -154,11 +154,11 @@ Namespace EDMIServiceReference
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCache", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCacheResp"& _ <System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCache", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCacheResp"& _
"onse")> _ "onse")> _
Function ReturnDatatableFromCache(ByVal Name As String) As EDMIServiceReference.TableResult Function ReturnDatatableFromCache(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As EDMIServiceReference.TableResult
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCache", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCacheResp"& _ <System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCache", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatableFromCacheResp"& _
"onse")> _ "onse")> _
Function ReturnDatatableFromCacheAsync(ByVal Name As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult) Function ReturnDatatableFromCacheAsync(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatable_Firebird", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatable_FirebirdResp"& _ <System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatable_Firebird", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ReturnDatatable_FirebirdResp"& _
"onse")> _ "onse")> _
@ -419,12 +419,12 @@ Namespace EDMIServiceReference
Return MyBase.Channel.HeartbeatAsync Return MyBase.Channel.HeartbeatAsync
End Function End Function
Public Function ReturnDatatableFromCache(ByVal Name As String) As EDMIServiceReference.TableResult Implements EDMIServiceReference.IEDMIService.ReturnDatatableFromCache Public Function ReturnDatatableFromCache(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As EDMIServiceReference.TableResult Implements EDMIServiceReference.IEDMIService.ReturnDatatableFromCache
Return MyBase.Channel.ReturnDatatableFromCache(Name) Return MyBase.Channel.ReturnDatatableFromCache(Name, FilterExpression, SortByColumn)
End Function End Function
Public Function ReturnDatatableFromCacheAsync(ByVal Name As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult) Implements EDMIServiceReference.IEDMIService.ReturnDatatableFromCacheAsync Public Function ReturnDatatableFromCacheAsync(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult) Implements EDMIServiceReference.IEDMIService.ReturnDatatableFromCacheAsync
Return MyBase.Channel.ReturnDatatableFromCacheAsync(Name) Return MyBase.Channel.ReturnDatatableFromCacheAsync(Name, FilterExpression, SortByColumn)
End Function End Function
Public Function ReturnDatatable_Firebird(ByVal SQL As String) As EDMIServiceReference.TableResult Implements EDMIServiceReference.IEDMIService.ReturnDatatable_Firebird Public Function ReturnDatatable_Firebird(ByVal SQL As String) As EDMIServiceReference.TableResult Implements EDMIServiceReference.IEDMIService.ReturnDatatable_Firebird

View File

@ -82,9 +82,18 @@ Public Class EDMIService
' Apply filter and sorting to data ' Apply filter and sorting to data
Dim oFilterExpression As String = Utils.NotNull(FilterExpression, String.Empty) Dim oFilterExpression As String = Utils.NotNull(FilterExpression, String.Empty)
Dim oSortByColumn As String = Utils.NotNull(SortByColumn, String.Empty) Dim oSortByColumn As String = Utils.NotNull(SortByColumn, String.Empty)
Dim oFilteredTable = oDataTable.
Select(oFilterExpression, oSortByColumn). Dim oFilteredRows = oDataTable.Select(oFilterExpression, oSortByColumn)
CopyToDataTable() Dim oFilteredTable As DataTable = Nothing
If oFilteredRows.Count > 0 Then
oFilteredTable = oFilteredRows.CopyToDataTable()
oFilteredTable.TableName = Name
Else
' Produce empty table
oFilteredTable = oDataTable.Clone()
oFilteredTable.TableName = Name
End If
_logger.Debug("Datatable Stats for [{0}]:", Name) _logger.Debug("Datatable Stats for [{0}]:", Name)
_logger.Debug("Unfiltered: [{0}] rows", oDataTable.Rows.Count) _logger.Debug("Unfiltered: [{0}] rows", oDataTable.Rows.Count)
@ -94,14 +103,6 @@ Public Class EDMIService
Else Else
Throw New ApplicationException($"DataTable {Name} does not exist") Throw New ApplicationException($"DataTable {Name} does not exist")
End If End If
'If oDataset.Tables.Contains(Name) Then
' oDataTable = oDataset.Tables.Item(Name).Clone()
' Return New TableResult(oDataTable)
'Else
' Throw New ApplicationException($"DataTable {Name} does not exist")
'End If
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _logger.Error(ex)
Return New TableResult(ex.Message) Return New TableResult(ex.Message)