using CnasSynchronusClient; using CnasSynchrousModel; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace CNAS_Authorize { public class Machine { public string FactoryName { get; set; } public string MachineCode { get; set; } public string ImportTime { get; set; } public bool IsGenerated { get; set; } public Machine(string name, string code, string time, bool isGen) { FactoryName = name; MachineCode = code; ImportTime = time; IsGenerated = isGen; } } class MachineAuth { /// /// 所有数据行 /// private List m_machines; /// /// 编码过滤 /// private string m_filter_code; /// /// 名称过滤 /// private string m_filter_factory; //以下都是过滤过的数据 /// /// 过滤过的数据 /// private List m_rangle; /// /// 过滤过的当前页 /// private List m_page; /// /// 每页数量 /// private int m_pageSize; /// /// 页号 /// private int m_pageIndex; /// /// 总页数 /// private int m_pageCount; public MachineAuth() { m_pageSize = 10; m_pageIndex = 1; } DataBaseInfo targetDataBase = new DataBaseInfo(); public void Load() { //加载CNAS数据库配置 targetDataBase = FileOperation.GetLocalCnasDB(); if (!CnasDataOperationFact.CnasDataOperation().TestConnect(targetDataBase)) { MessageBox.Show("CNAS数据库无法正常连接...", "提示"); return; } m_machines = new List(); ////1.加载数据 DataTable dtmacaddressinfo = CnasDataOperationFact.CnasDataOperation().GetTableData(targetDataBase, "select * from macaddress"); if (dtmacaddressinfo != null && dtmacaddressinfo.Rows.Count > 0) { List lstCnasTables = new List(); foreach (DataRow dr in dtmacaddressinfo.Rows) { Machine m = new Machine( dr["PLANTCODE"].ToString(), dr["MAC_ADDRESS"].ToString(), dr["CREATETIME"].ToString(), true); m_machines.Add(m); lstCnasTables.Add(dr["MAC_ADDRESS"].ToString()); } } m_rangle = new List(); m_rangle.AddRange(m_machines); m_pageSize = 10; m_pageIndex = 1; m_pageCount = (m_rangle.Count / m_pageSize) + (m_rangle.Count % m_pageSize == 0 ? 0 : 1); m_page = getPageData(m_pageIndex); } public int PageSize { get { return m_pageSize; } set { m_pageSize = value; updateView(); } } public string CurrentPage { get { return m_pageCount == 0 ? "" : string.Format("{0} / {1}", m_pageIndex, m_pageCount); } set { } } public int TotalCount { get { return m_machines == null ? 0 : m_machines.Count; } set { } } private void updateView() { List view = new List(); if (!string.IsNullOrEmpty(m_filter_code) || !string.IsNullOrEmpty(m_filter_factory)) { foreach (Machine item in m_machines) { bool flag = true; if (!string.IsNullOrEmpty(m_filter_code)) { if (item.MachineCode.IndexOf(m_filter_code) == -1) { flag = false; } } if (!string.IsNullOrEmpty(m_filter_factory)) { if (item.FactoryName.IndexOf(m_filter_factory) == -1) { flag = false; } } if (flag) { view.Add(item); } } } else { view.AddRange(m_machines); } m_rangle = view; m_pageIndex = 1; m_pageCount = (m_rangle.Count / m_pageSize) + (m_rangle.Count % m_pageSize == 0 ? 0 : 1); m_page = getPageData(m_pageIndex); } public void ChangeFilter(string code, string factory) { this.m_filter_code = code; this.m_filter_factory = factory; updateView(); } public List Page { get { return m_page; } } private List getPageData(int pageIndex) { int index = (pageIndex - 1) * m_pageSize; List page = new List(m_pageSize); for (int i = 0; i < m_pageSize && index < m_rangle.Count; i++) { page.Add(m_rangle[index]); index++; } return page; } public List NextPage(out bool ok) { int index = m_pageIndex * m_pageSize; if (m_rangle == null || index >= m_rangle.Count) { ok = false; return null; } m_pageIndex++; m_page = getPageData(m_pageIndex); ok = true; return m_page; } public List PrevPage(out bool ok) { if (m_pageIndex == 1 || m_rangle == null) { ok = false; return null; } m_pageIndex--; m_page = getPageData(m_pageIndex); ok = true; return m_page; } } }