示例#1
0
        private void btnCompare_Click_Thin(object sender, EventArgs e)
        {
            DataTable tmpDt = new DataTable();

            if (isInitialBomList == true)
            {
                // 第一次取得BomList

                tmpDt = MvDbDao.collectData_BomList();
                cboBomType.DataSource    = tmpDt;
                cboBomType.ValueMember   = "MC001";
                cboBomType.DisplayMember = "MB0012";
                cboBomType.Text          = "";
                cboBomType.SelectedValue = "";
                isInitialBomList         = false;
                return;
            }

            if (BomView.Items.Count < 2)
            {
                MessageBox.Show("請選擇2個bom表");
                return;
            }

            // 取得已選取的list
            List <string> selectedList = new List <string>();

            foreach (var item in BomView.Items)
            {
                string row = (item as ListViewItem).Text;
                selectedList.Add(row);
            }

            // 判斷是否選取相同的Bom表
            if (selectedList[0].Equals(selectedList[1]) == true)
            {
                MessageBox.Show("請不要選取相同的bom表比對");
                return;
            }

            // show wait process
            SplashScreenManager.ShowDefaultWaitForm();

            DataSet        sourceDs = new DataSet();
            MvBomCompareBo bo       = new MvBomCompareBo();

            sourceDs = bo.CollectSourceDsProcess_BomP09_Thin(selectedList.ToArray <string>()).Copy();

            // filter data
            DataTable sourceDt1 = sourceDs.Tables[0].Copy();
            DataTable sourceDt2 = sourceDs.Tables[1].Copy();
            DataSet   summaryDs = new DataSet();
            DataSet   tmpDs     = new DataSet();

            // show tree list node
            // 設定column
            DataTable filterDt1 = bo.filterDataByRdRule(sourceDt1, true);
            DataTable filterDt2 = bo.filterDataByRdRule(sourceDt2, true);

            DataTable dtIncludeNameSpace1;
            DataTable dtIncludeNameSpace2;
            DataTable summaryDt;

            dtIncludeNameSpace1 = bo.extendBomNameSpace(filterDt1, true);
            dtIncludeNameSpace2 = bo.extendBomNameSpace(filterDt2, true);

            summaryDs = bo.compareBomByRuleRd_v2(dtIncludeNameSpace1, dtIncludeNameSpace2, false);
            tmpDs     = bo.compareBomByRuleRd_v2(dtIncludeNameSpace2, dtIncludeNameSpace1, true);

            // 顯示Detail Summary相關資訊
            // 相同的資料不用再呈現差異的比對資訊
            tmpDt = summaryDs.Tables["Same"];
            tmpDt.Columns.Remove("CompareLV");
            tmpDt.Columns.Remove("CompareA8");
            tmpDt.Columns.Remove("CompareMD006");
            tmpDt.Columns.Remove("ModuleLv1");
            treeList3.DataSource = tmpDt.Copy();
            summaryDt            = summaryDs.Tables["Different"];
            summaryDt.Merge(tmpDs.Tables["Different"]);
            treeList4.DataSource = summaryDt.Copy();
            setCompareDetailColumnsCaption(ref treeList3, ref treeList4);

            // 顯示SummaryBom相關資訊 for RD
            tmpDt = new DataTable();
            tmpDt = bo.generateSummaryTableByRd(summaryDt, true);
            treeList5.DataSource = tmpDt.Copy();
            setSummaryDetailColumnsCaption(ref treeList5);

            // 整理SummaryBom For Pur
            tmpDt = bo.generateSummaryTableByPur(summaryDt);
            treeList6.DataSource = tmpDt.Copy();
            setSummaryColumnsCaption(ref treeList6);

            // initial hash tables
            for (int i = 0; i < hashTreeListBackColor.Length; i++)
            {
                hashTreeListBackColor[i] = new Hashtable();
            }

            // 注意 ParentFieldName必需在 showTreeListByLevel之前
            // 只要設定過, Level的功能會失效
            treeList1.DataSource      = dtIncludeNameSpace1.Clone();
            treeList1.ParentFieldName = dtIncludeNameSpace1.TableName;
            hashTreeListBackColor[0].Clear();
            showTreeListByLevel(treeList1, dtIncludeNameSpace1, ref hashTreeListBackColor[0], false);
            setColumnsCaption(ref treeList1);

            // 注意 ParentFieldName必需在 showTreeListByLevel之前
            // 只要設定過, Level的功能會失效
            treeList2.DataSource      = dtIncludeNameSpace2.Clone();
            treeList2.ParentFieldName = dtIncludeNameSpace2.TableName;
            hashTreeListBackColor[1].Clear();
            showTreeListByLevel(treeList2, dtIncludeNameSpace2, ref hashTreeListBackColor[1], false);
            setColumnsCaption(ref treeList2);

            xtraTabControl1.TabPages[0].Text = string.Format("{0} vs {1}", filterDt1.TableName, filterDt2.TableName);
            xtraTabControl1.TabPages[1].Text = "CompareDetail";
            xtraTabControl1.TabPages[2].Text = "SummaryDetail";
            xtraTabControl1.TabPages[3].Text = "Summary";

            // Sheet1,2 不開放編輯功能, treeList 1,2,3,4
            // Sheet3,4 開放編輯功能, 這些資料都只能是read only
            treeList1.OptionsBehavior.ReadOnly = true;
            treeList2.OptionsBehavior.ReadOnly = true;
            treeList3.OptionsBehavior.ReadOnly = true;
            treeList4.OptionsBehavior.ReadOnly = true;
            treeList5.OptionsBehavior.ReadOnly = true;
            treeList6.OptionsBehavior.ReadOnly = true;

            treeList1.OptionsBehavior.Editable = false;
            treeList2.OptionsBehavior.Editable = false;
            treeList3.OptionsBehavior.Editable = false;
            treeList4.OptionsBehavior.Editable = false;
            treeList5.OptionsBehavior.Editable = false;
            treeList6.OptionsBehavior.Editable = false;

            treeList1.Columns["NameSpace"].Visible      = false;
            treeList1.Columns["NameSpaceNoVer"].Visible = false;
            treeList1.Columns["MD013"].Visible          = false;
            treeList1.Columns["AmountSpace"].Visible    = false;
            treeList1.Columns["RowId"].Visible          = false;

            treeList2.Columns["NameSpace"].Visible      = false;
            treeList2.Columns["NameSpaceNoVer"].Visible = false;
            treeList2.Columns["MD013"].Visible          = false;
            treeList2.Columns["AmountSpace"].Visible    = false;
            treeList2.Columns["RowId"].Visible          = false;

            //Close Wait Form
            SplashScreenManager.CloseForm(false);
        }