From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点
---
Plugin.DataViewer/DataViewerControl.xaml.cs | 800 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 800 insertions(+), 0 deletions(-)
diff --git a/Plugin.DataViewer/DataViewerControl.xaml.cs b/Plugin.DataViewer/DataViewerControl.xaml.cs
new file mode 100644
index 0000000..372bba9
--- /dev/null
+++ b/Plugin.DataViewer/DataViewerControl.xaml.cs
@@ -0,0 +1,800 @@
+锘縰sing CommunityToolkit.Mvvm.ComponentModel;
+using HMI.Base;
+using HMI.Core;
+using HMI.Core.Setting;
+using HMI.Core.Util;
+using HMI.UI.Util;
+using HMI.Util;
+using Microsoft.Win32;
+using Panuon.WPF.UI;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Data;
+using System.IO;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+
+namespace Plugin.DataViewer
+{
+ public class TestResult
+ {
+ [ExcelColumn("SN")]
+ public string sn { get; set; }
+
+ [ExcelColumn("绌翠綅鍙�")]
+ public string position { get; set; }
+
+ [ExcelColumn("鍨嬪彿")]
+ public string model { get; set; }
+
+ [ExcelColumn("娴嬭瘯缁撴灉")]
+ public string result { get; set; }
+
+ [ExcelColumn("娴嬭瘯鏃堕棿")]
+ public string time { get; set; }
+ }
+
+ public class SerialData
+ {
+ [ExcelColumn("SN")]
+ public string sn { get; set; }
+
+ [ExcelColumn("绌翠綅鍙�")]
+ public string position { get; set; }
+
+ [ExcelColumn("鍨嬪彿")]
+ public string model { get; set; }
+
+ [ExcelColumn("娴嬭瘯椤�")]
+ public string step { get; set; }
+
+ [ExcelColumn("娴嬭瘯鍊�")]
+ public string value { get; set; }
+
+ [ExcelColumn("涓嬮檺")]
+ public string limitDown { get; set; }
+
+ [ExcelColumn("涓婇檺")]
+ public string limitUp { get; set; }
+ [ExcelColumn("缁撴灉")]
+ public string status { get; set; }
+
+ [ExcelColumn("鍗曚綅")]
+ public string unit { get; set; }
+
+ [ExcelColumn("娴嬭瘯鏃堕棿")]
+ public string time { get; set; }
+ }
+
+ public class SortParam
+ {
+ public string name { get; set; }
+ public ListSortDirection direction { get; set; }
+ public string sort { get; set; }
+ }
+
+ public class ResultData
+ {
+ public string sn { get; set; }
+ public string position { get; set; }
+ }
+
+ /// <summary>
+ /// DataViewerControl.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ [ObservableObject]
+ public partial class DataViewerControl : SimpleMaskControl
+ {
+ [ObservableProperty]
+ private DataView resultView;
+
+ [ObservableProperty]
+ private ObservableCollection<ResultData> resultData;
+
+ [ObservableProperty]
+ private long currentPage = 1;
+
+ [ObservableProperty]
+ private long totalPage = 0;
+
+ private int pageSize = 30;
+
+ [ObservableProperty]
+ private long totalCount;
+
+ [ObservableProperty]
+ private long passCount;
+
+ [ObservableProperty]
+ private long failCount;
+
+ [ObservableProperty]
+ private long testItemPage = 1;
+
+ [ObservableProperty]
+ private long testItemTotalPage = 0;
+
+ [ObservableProperty]
+ private object selectedResult;
+
+ [ObservableProperty]
+ private string selectedStatus;
+
+ private SortParam sorter;
+ private SortParam itemSorter;
+ public DataViewerControl()
+ {
+ DataContext = this;
+ InitializeComponent();
+ Reset();
+ }
+
+ private string[] GetFiles(DateTime? startTime, DateTime? endTime)
+ {
+ string dir = ParamSetting.DataLogFolder;
+ string startName = $"Data_{startTime?.ToString("yyyyMMdd")}";
+ string endName = $"Data_{endTime?.ToString("yyyyMMdd")}";
+ var oldFiles = Directory.GetFiles(dir, "Data_*.db");
+ oldFiles = oldFiles.Where(file =>
+ {
+ var fileName = Path.GetFileNameWithoutExtension(file);
+ bool flag = true;
+ flag &= (string.Compare(fileName, startName) == 1 || fileName == startName);
+ flag &= (string.Compare(endName, fileName) == 1 || fileName == endName);
+ return flag;
+ }).ToArray();
+ return oldFiles;
+ }
+
+ private void Reset()
+ {
+ var today = DateTime.Now;
+ var startTime = today.AddDays(-7);
+ var end = today.AddDays(1);
+
+ snInput.Text = string.Empty;
+ positionInput.Text = string.Empty;
+ modelInput.Text = string.Empty;
+ resultInput.Text = string.Empty;
+
+ startTimeInput.SelectedDateTime = DateTime.Parse(startTime.ToString("yyyy-MM-dd 00:00:00"));
+ endTimeInput.SelectedDateTime = DateTime.Parse(end.ToString("yyyy-MM-dd 00:00:00"));
+ }
+
+ private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
+ {
+ var btn = sender as Button;
+ if (btn.Name == "resetBtn")
+ {
+ Reset();
+ if (CurrentPage == 1)
+ {
+ SelectPage(1, this.pageSize);
+ }
+ else
+ {
+ CurrentPage = 1;
+ }
+ return;
+ }
+ if (btn.Name == "srhBtn")
+ {
+ if (CurrentPage == 1)
+ {
+ SelectPage(1, this.pageSize);
+ }
+ else
+ {
+ CurrentPage = 1;
+ }
+ return;
+ }
+
+ if (btn.Name == "srhItemBtn")
+ {
+ if (TestItemPage == 1)
+ {
+ RefreshTestItem(this.selectResultId, 1, this.pageSize);
+ }
+ else
+ {
+ TestItemPage = 1;
+ }
+ return;
+ }
+
+ if (btn.Name == "exportBtn")
+ {
+ TryExport();
+ }
+
+ if (btn.Name == "exportItemBtn")
+ {
+ TryExportItem();
+ }
+ }
+
+ private void TryExport()
+ {
+ SaveFileDialog sfd = new SaveFileDialog
+ {
+ Filter = "Excel 鏂囦欢 (*.xls)|*.xls"
+ };
+ if (sfd.ShowDialog() != true)
+ {
+ return;
+ }
+ string filePath = sfd.FileName;
+
+ DateTime? startTime = startTimeInput.SelectedDateTime, endTime = endTimeInput.SelectedDateTime;
+
+ topMask.ShowMask(this, () =>
+ {
+ var table = SelectResult(startTime, endTime);
+
+ ExcelHelper.ExportExcel<TestResult>(filePath, table);
+
+ }, (ex) =>
+ {
+ log.Error("Export Result Failed.", ex);
+ Dispatcher.Invoke(() =>
+ {
+ MsgBoxHelper2.Error($"瀵煎嚭澶辫触锛亄ex.Message}");
+ });
+ }, "瀵煎嚭涓�,璇风◢鍚�...");
+ }
+
+ private void TryExportItem()
+ {
+ SaveFileDialog sfd = new SaveFileDialog
+ {
+ Filter = "Excel 鏂囦欢 (*.xls)|*.xls"
+ };
+ if (sfd.ShowDialog() != true)
+ {
+ return;
+ }
+ string filePath = sfd.FileName;
+
+ DateTime? startTime = startTimeInput.SelectedDateTime, endTime = endTimeInput.SelectedDateTime;
+
+ topMask.ShowMask(this, () =>
+ {
+ var table = SelectItem(startTime, endTime);
+
+ ExcelHelper.ExportExcel<SerialData>(filePath, table);
+
+ }, (ex) =>
+ {
+ log.Error("Export Result Failed.", ex);
+ Dispatcher.Invoke(() =>
+ {
+ MsgBoxHelper2.Error($"瀵煎嚭澶辫触锛亄ex.Message}");
+ });
+ }, "瀵煎嚭涓�,璇风◢鍚�...");
+ }
+
+ private DataTable SelectResult(DateTime? startTime, DateTime? endTime)
+ {
+ var files = GetFiles(startTime, endTime);
+ if (files == null || files.Length <= 0)
+ {
+ return new DataTable();
+ }
+ using (var helper = new Sqlite3Helper(files[0]))
+ {
+ for (int i = 0; i < files.Length; i++)
+ {
+ var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
+ helper.Execute(attach);
+ }
+
+ for (int i = 0; i < files.Length; i++)
+ {
+ if (!helper.HasData($"SELECT 1 FROM pragma_table_info('testResult','db{i}') WHERE name = 'resultId';"))
+ {
+ helper.Execute($"ALTER TABLE db{i}.testResult ADD resultId TEXT;");
+ }
+ }
+
+ string sql = string.Join(" UNION ALL ", GetResultSqlsByFiles(files, startTime, endTime));
+ string sortName = "time", sortDirection = "DESC";
+ string baseSql = $"SELECT id,sn,model,station,position,result,time,resultId FROM ({sql}) as _temp";
+
+
+
+ sql = $"{baseSql} ORDER BY {sortName} {sortDirection}";
+
+ return helper.GetDataTable(sql);
+
+ //for (int i = 0; i < files.Length; i++)
+ //{
+ // helper.Execute($"DETACH DATABASE db{i}");
+ //}
+ }
+ }
+
+ private DataTable SelectItem(DateTime? startTime, DateTime? endTime)
+ {
+ if (string.IsNullOrEmpty(this.selectResultId))
+ {
+ return new DataTable();
+ }
+ var files = GetFiles(startTime, endTime);
+ if (files == null || files.Length <= 0)
+ {
+ return new DataTable();
+ }
+ using (var helper = new Sqlite3Helper(files[0]))
+ {
+ for (int i = 0; i < files.Length; i++)
+ {
+ var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
+ helper.Execute(attach);
+ }
+
+ for (int i = 0; i < files.Length; i++)
+ {
+ if (!helper.HasData($"SELECT 1 FROM pragma_table_info('serialData','db{i}') WHERE name = 'resultId';"))
+ {
+ helper.Execute($"ALTER TABLE db{i}.serialData ADD resultId TEXT;");
+ }
+ }
+
+ string sql = string.Join(" UNION ALL ", GetTestItemSqlsByFiles(this.selectResultId, files));
+
+ string sortName = "time", sortDirection = "DESC";
+
+ string baseSql = $"SELECT sn, position, model,step, limitDown, limitUp,unit, value,status,time FROM ({sql}) as _temp";
+
+ sql = $"{baseSql} ORDER BY {sortName} {sortDirection}";
+
+ return helper.GetDataTable(sql);
+
+
+ //for (int i = 0; i < files.Length; i++)
+ //{
+ // helper.Execute($"DETACH DATABASE db{i}");
+ //}
+ }
+ }
+
+ private void SelectPage(long page, long pageSize)
+ {
+ try
+ {
+ var files = GetFiles(startTimeInput.SelectedDateTime, endTimeInput.SelectedDateTime);
+ if (files == null || files.Length <= 0)
+ {
+ return;
+ }
+ using (var helper = new Sqlite3Helper(files[0]))
+ {
+ for (int i = 0; i < files.Length; i++)
+ {
+ var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
+ helper.Execute(attach);
+ }
+
+ for (int i = 0; i < files.Length; i++)
+ {
+ if (!helper.HasData($"SELECT 1 FROM pragma_table_info('testResult','db{i}') WHERE name = 'resultId';"))
+ {
+ helper.Execute($"ALTER TABLE db{i}.testResult ADD resultId TEXT;");
+ }
+ }
+
+ string sql = string.Join(" UNION ALL ", GetResultSqlsByFiles(files, startTimeInput.SelectedDateTime, endTimeInput.SelectedDateTime));
+ string sortName = "time", sortDirection = "DESC";
+
+ if (sorter != null)
+ {
+ sortName = sorter.name;
+ sortDirection = sorter.sort;
+ }
+ string countSql = $"SELECT COUNT(1) FROM ({sql}) as _temp";
+ long total = (long)helper.SelectOne(countSql);
+
+ string baseSql = $"SELECT id,sn,model,station,position,result,time,resultId FROM ({sql}) as _temp";
+
+
+
+ sql = $"{baseSql} ORDER BY {sortName} {sortDirection} LIMIT {pageSize} OFFSET {(page - 1) * pageSize}";
+
+ var dt = helper.GetDataTable(sql);
+
+ TotalPage = total / pageSize + (total % pageSize > 0 ? 1 : 0);
+ resultTable.ItemsSource = dt.DefaultView;
+
+ sql = $"SELECT result,COUNT(1) as num FROM ({baseSql}) GROUP BY result";
+ var nums = helper.GetDataTable(sql);
+
+ long all = 0, pass = 0, fail = 0;
+ foreach (DataRow row in nums.Rows)
+ {
+ if ("ok".Equals(row["result"].ToString(), StringComparison.OrdinalIgnoreCase)
+ || "pass".Equals(row["result"].ToString(), StringComparison.OrdinalIgnoreCase))
+ {
+ pass += (long)row["num"];
+ all += (long)row["num"];
+ }
+ if ("ng".Equals(row["result"].ToString(), StringComparison.OrdinalIgnoreCase)
+ || "fail".Equals(row["result"].ToString(), StringComparison.OrdinalIgnoreCase))
+ {
+ fail += (long)row["num"];
+ all += (long)row["num"];
+ }
+ }
+
+ TotalCount = all;
+ PassCount = pass;
+ FailCount = fail;
+
+ //for (int i = 0; i < files.Length; i++)
+ //{
+ // helper.Execute($"DETACH DATABASE db{i}");
+ //}
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("Select TestResult Error.", ex);
+
+ }
+ }
+
+ private void RefreshTestItem(string resultId, long page, int pageSize)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(resultId))
+ {
+ testItemTable.ItemsSource = new DataTable().DefaultView;
+ return;
+ }
+
+ var files = GetFiles(startTimeInput.SelectedDateTime, endTimeInput.SelectedDateTime);
+ if (files == null || files.Length <= 0)
+ {
+ return;
+ }
+
+ string sql = string.Join(" UNION ALL ", GetTestItemSqlsByFiles(resultId, files));
+ string sortName = "time", sortDirection = "DESC";
+ if (itemSorter != null)
+ {
+ sortName = itemSorter.name;
+ sortDirection = itemSorter.sort;
+ }
+
+ mask2.ShowMask(null, () =>
+ {
+ using (var helper = new Sqlite3Helper(files[0]))
+ {
+ for (int i = 0; i < files.Length; i++)
+ {
+ var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
+ helper.Execute(attach);
+ }
+
+ for (int i = 0; i < files.Length; i++)
+ {
+ if (!helper.HasData($"SELECT 1 FROM pragma_table_info('serialData','db{i}') WHERE name = 'resultId';"))
+ {
+ helper.Execute($"ALTER TABLE db{i}.serialData ADD resultId TEXT;");
+ }
+ }
+
+
+ string countSql = $"SELECT COUNT(1) FROM ({sql}) as _temp";
+ long total = (long)helper.SelectOne(countSql);
+
+ string baseSql = $"SELECT sn, model,step, limitDown, limitUp,unit, value,status,time FROM ({sql}) as _temp";
+
+ sql = $"{baseSql} ORDER BY {sortName} {sortDirection} LIMIT {pageSize} OFFSET {(page - 1) * pageSize}";
+
+ var dt = helper.GetDataTable(sql);
+
+
+ //for (int i = 0; i < files.Length; i++)
+ //{
+ // helper.Execute($"DETACH DATABASE db{i}");
+ //}
+
+ Dispatcher.BeginInvoke(() =>
+ {
+ TestItemTotalPage = total / pageSize + (total % pageSize > 0 ? 1 : 0);
+ testItemTable.ItemsSource = dt.DefaultView;
+ }, System.Windows.Threading.DispatcherPriority.Normal);
+ }
+ }, (ex) =>
+ {
+ log.Error("Select TestItem Error.", ex);
+ },
+ "鏌ヨ涓�...");
+ }
+ catch (Exception ex)
+ {
+ log.Error("Try Select TestItem Error.", ex);
+ }
+ }
+
+ public string[] GetResultSqlsByFiles(string[] files, DateTime? startTime, DateTime? endTime)
+ {
+ string sn = string.Empty, position = string.Empty, model = string.Empty, result = string.Empty;
+ Dispatcher.Invoke(() =>
+ {
+ sn = snInput.Text;
+ position = positionInput.Text;
+ model = modelInput.Text;
+ result = resultInput.Text;
+ });
+
+ string[] sqls = new string[files.Length];
+ List<string> querys = new List<string>();
+ if (!string.IsNullOrEmpty(sn))
+ {
+ querys.Add($"sn = '{sn}'");
+ }
+
+ if (!string.IsNullOrEmpty(position))
+ {
+ querys.Add($"position = '{position}'");
+ }
+
+ if (!string.IsNullOrEmpty(model))
+ {
+ querys.Add($"model = '{model}'");
+ }
+
+ if (!string.IsNullOrEmpty(result))
+ {
+ querys.Add($"result = '{result}'");
+ }
+
+ if (startTime != null)
+ {
+ querys.Add($"time >= '{startTime.Value.ToString("yyyy-MM-dd HH:mm:ss")}'");
+ }
+
+ if (endTime != null)
+ {
+ querys.Add($"time < '{endTime.Value.ToString("yyyy-MM-dd HH:mm:ss")}'");
+ }
+
+ string segment = "";
+ if (querys.Count > 0)
+ {
+ segment = $" WHERE {string.Join(" AND ", querys)}";
+ }
+
+ for (int i = 0; i < files.Length; i++)
+ {
+ sqls[i] = $"SELECT id,sn,model,station,position,result,time,resultId FROM db{i}.testResult {segment}";
+ }
+ return sqls;
+ }
+
+ private string[] GetTestItemSqlsByFiles(string resultId, string[] files)
+ {
+ List<string> querys = new List<string>() {
+ $"resultId = '{resultId}'"
+ };
+ string step = string.Empty, status = string.Empty;
+ Dispatcher.Invoke(() =>
+ {
+ step = stepInput.Text;
+ status = statusInput.Text;
+ });
+
+
+ if (!string.IsNullOrEmpty(step))
+ {
+ querys.Add($"step = '{step}'");
+ }
+
+ if (!string.IsNullOrEmpty(status))
+ {
+ querys.Add($"status = '{status}'");
+ }
+
+ string segment = string.Join(" AND ", querys); ;
+
+ string[] sqls = new string[files.Length];
+ for (int i = 0; i < files.Length; i++)
+ {
+ sqls[i] = $"SELECT sn, position, model,step, limitDown, limitUp,unit, value,status,time FROM db{i}.serialData WHERE {segment}";
+ }
+ return sqls;
+ }
+
+ public string[] GetSource(string[] files, string name, string tableName, string value)
+ {
+ try
+ {
+ if (files == null || files.Length <= 0)
+ {
+ return new string[0];
+ }
+ string[] GetModelSqls()
+ {
+ string[] sqls = new string[files.Length];
+ for (int i = 0; i < files.Length; i++)
+ {
+ sqls[i] = $"SELECT DISTINCT {name} FROM db{i}.{tableName} WHERE {name} LIKE '%{value}%'";
+ }
+ return sqls;
+ }
+
+ using (var helper = new Sqlite3Helper(files[0]))
+ {
+ for (int i = 0; i < files.Length; i++)
+ {
+ var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
+ helper.Execute(attach);
+ }
+ string sql = string.Join(" UNION ", GetModelSqls());
+ sql = $"SELECT DISTINCT {name} FROM ({sql}) LIMIT 10";
+
+ var dt = helper.GetDataTable(sql);
+ return dt.Select().Select(row => row[name].ToString()).ToArray();
+ }
+ return new string[0];
+ }
+ catch (Exception ex)
+ {
+ return new string[0];
+ }
+ }
+
+
+ private void SearchTextChanged(object sender, Panuon.WPF.SearchTextChangedRoutedEventArgs e)
+ {
+ SearchBox sb = sender as SearchBox;
+ string tag = sb.Tag.ToString(), value = sb.Text;
+ var files = GetFiles(startTimeInput.SelectedDateTime, endTimeInput.SelectedDateTime);
+ Task.Run(() =>
+ {
+ string[] items = new string[0];
+ if (tag == "step" || tag == "status")
+ {
+ items = GetSource(files, tag, "serialData", value);
+ }
+ else
+ {
+ items = GetSource(files, tag, "testResult", value);
+ }
+ Dispatcher.BeginInvoke(new Action(() =>
+ {
+ sb.ItemsSource = items;
+ }), System.Windows.Threading.DispatcherPriority.Normal);
+ });
+ }
+
+ private void Grid_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
+ {
+ var border = sender as Border;
+ var header = border.Tag as DataGridColumnHeader;
+ var col = header.Column as ICustomSortColumn;
+
+ if (col == null) return;
+
+ col.UpdateOther(null);
+
+ var dataGrid = col.GetOwner();
+
+ if (col.IsAsc == null)
+ {
+ col.IsAsc = true;
+
+ if (dataGrid == resultTable)
+ {
+ sorter = new SortParam { name = header.Column.SortMemberPath, direction = ListSortDirection.Ascending, sort = "ASC" };
+ }
+ else {
+ itemSorter = new SortParam { name = header.Column.SortMemberPath, direction = ListSortDirection.Ascending, sort = "ASC" };
+ }
+
+ }
+ else if (col.IsAsc == true)
+ {
+ col.IsAsc = false;
+ if (dataGrid == resultTable)
+ {
+ sorter = new SortParam { name = header.Column.SortMemberPath, direction = ListSortDirection.Descending, sort = "DESC" };
+ }
+ else
+ {
+ itemSorter = new SortParam { name = header.Column.SortMemberPath, direction = ListSortDirection.Descending, sort = "DESC" };
+ }
+ }
+ else
+ {
+ col.IsAsc = null;
+ if (dataGrid == resultTable)
+ {
+ sorter = null;
+ }
+ else
+ {
+ itemSorter = null;
+ }
+ }
+
+ if (dataGrid == resultTable)
+ {
+ if (CurrentPage == 1)
+ {
+ SelectPage(1, this.pageSize);
+ }
+ else
+ {
+ CurrentPage = 1;
+ }
+ }
+ else
+ {
+ if (TestItemPage == 1)
+ {
+ RefreshTestItem(this.selectResultId, 1, this.pageSize);
+ }
+ else
+ {
+ TestItemPage = 1;
+ }
+ }
+ }
+
+ private void page_CurrentPageChanged(object sender, Panuon.WPF.SelectedValueChangedRoutedEventArgs<int> e)
+ {
+ if (sender == page)
+ {
+ SelectPage(e.NewValue, this.pageSize);
+ }
+ else
+ {
+ RefreshTestItem(this.selectResultId, e.NewValue, this.pageSize);
+ }
+ }
+
+ private string selectResultId;
+
+ partial void OnSelectedResultChanged(object value)
+ {
+ if (value != null)
+ {
+ return;
+ }
+ var selectedRow = value as DataRowView;
+ var resultId = selectedRow?["resultId"]?.ToString();
+ this.SelectedStatus = selectedRow?["result"]?.ToString();
+ this.selectResultId = resultId;
+
+ if (TestItemPage == 1)
+ {
+ RefreshTestItem(resultId, 1, this.pageSize);
+ }
+ else
+ {
+ TestItemPage = 1;
+ }
+ }
+
+ private void resultTable_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
+ {
+ var selectedRow = this.SelectedResult as DataRowView;
+ var resultId = selectedRow?["resultId"]?.ToString();
+ this.SelectedStatus = selectedRow?["result"]?.ToString();
+ this.selectResultId = resultId;
+
+ if (TestItemPage == 1)
+ {
+ RefreshTestItem(resultId, 1, this.pageSize);
+ }
+ else
+ {
+ TestItemPage = 1;
+ }
+ }
+ }
+}
--
Gitblit v1.9.1