} // key1: blockId, key2:referecne, value private static DataTable CreateDataTableStrcutureFromBlockSubitem(List <PdmBlockSubItemClrDto> listSubitems) { DataTable table = new DataTable("SubitemTable"); DataColumn aRefDataColumn = new DataColumn(GridColumnConstantName.ProductReferenceID, typeof(int)); table.Columns.Add(aRefDataColumn); foreach (PdmBlockSubItemClrDto aSubitem in listSubitems) { DataColumn aDataColumn; string aSubItemId = aSubitem.SubItemId.ToString(); if (aSubitem.ControlType == (int)EmControlType.DDL) { aDataColumn = new DataColumn(aSubItemId, typeof(string)); } else { aDataColumn = new DataColumn(aSubItemId, ControlTypeValueConverter.GetDataTypeByControlType(aSubitem.ControlType)); } table.Columns.Add(aDataColumn); } return(table); }
private static void ProcessUserDefineEntityColumn(PdmGridClrDto aPdmGridEntity, DataTable toReturnDcuTable, List <SimpleUserDefineEntityRow> listRow, int masterColumnId) { Dictionary <int, SimpleUserDefineEntityRow> dictRow = listRow.ToDictionary(o => o.RowId, o => o); foreach (DataRow dataRow in toReturnDcuTable.Rows) { string valueId = dataRow[masterColumnId.ToString()] as string; CLROutput.OutputDebug("masterColumnId value" + valueId); if (!string.IsNullOrEmpty(valueId)) { // int.Parse ( int intValueId = int.Parse(valueId); if (dictRow.ContainsKey(intValueId)) { var dtRow = dictRow[intValueId]; foreach (var dependentEntityColumn in aPdmGridEntity.MasterEntityDepdentColumn[masterColumnId]) { int userDefineColumnId = int.Parse(dependentEntityColumn.InternalCode); // CLROutput.Output("userDefineColumnId" + userDefineColumnId); object value = ControlTypeValueConverter.ConvertValueToObject(dtRow[userDefineColumnId], dependentEntityColumn.ColumnTypeId); if (value != null) { dataRow[dependentEntityColumn.GridColumnId.ToString()] = value; } } } } } }
private static int?GetReferencePomOfUnitMeasure(int referenceId) { string query = @"select PomUnitOfMeasure from pdmProduct where ProductReferenceID =@ProductReferenceID"; List <SqlParameter> paraList = new List <SqlParameter> (); paraList.Add(new SqlParameter("@ProductReferenceID", referenceId)); using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString)) { //SqlContext. conn.Open(); object value = DataAcessHelper.RetriveSigleValue(conn, query, paraList); return(ControlTypeValueConverter.ConvertValueToInt(value)); } }
public static DataTable ConvertSimpleGridProductRowToDataTable(IEnumerable <SimpleGridProductRow> rowList, List <int> columnIds, DataTable table) { // Dictionary <int, int> dictGridColumnIdAndType = PdmCacheManager.GetMutiplePdmGridMetaColumnEntityFromCache(columnIds).ToDictionary(o => o.GridColumnId, o => o.ColumnTypeId); foreach (var gridRow in rowList) { DataRow dataRow = table.NewRow(); dataRow[GridColumnConstantName.ProductReferenceID] = gridRow.ProductReferenceId; dataRow[GridColumnConstantName.RowValueGUID] = gridRow.RowValueGuId; dataRow[GridColumnConstantName.Sort] = gridRow.Sort; foreach (int columnId in columnIds) { object value = ControlTypeValueConverter.ConvertValueToObject(gridRow[columnId], dictGridColumnIdAndType[columnId]); if (value == null) { dataRow[columnId.ToString()] = DBNull.Value; } else { // CLROutput.Output("convervalue=" + value); dataRow[columnId.ToString()] = value; // CLROutput.Output("dataRow[subitem.id.ToString()]" + dataRow[subitem.id.ToString()]); } // need to remove !!!! ! // dataRow[columnId.ToString()] = value; } table.Rows.Add(dataRow); } return(table); }
internal static DataTable CreateDataTableStrcutureFromGridColumn(List <PdmGridMetaColumnClrDto> listSubitems) { DataTable table = new DataTable("GridTable"); DataColumn aRefDataColumn = new DataColumn(GridColumnConstantName.ProductReferenceID, typeof(int)); table.Columns.Add(aRefDataColumn); //aRefDataColumn = new DataColumn(GridColumnConstantName.RowID, typeof(int)); //table.Columns.Add(aRefDataColumn); aRefDataColumn = new DataColumn(GridColumnConstantName.RowValueGUID, typeof(Guid)); table.Columns.Add(aRefDataColumn); aRefDataColumn = new DataColumn(GridColumnConstantName.Sort, typeof(int)); table.Columns.Add(aRefDataColumn); foreach (PdmGridMetaColumnClrDto aSubitem in listSubitems) { DataColumn aDataColumn; string aSubItemId = aSubitem.GridColumnId.ToString(); if (aSubitem.ColumnTypeId == (int)EmControlType.DDL) { aDataColumn = new DataColumn(aSubItemId, typeof(string)); } else { aDataColumn = new DataColumn(aSubItemId, ControlTypeValueConverter.GetDataTypeByControlType(aSubitem.ColumnTypeId)); } table.Columns.Add(aDataColumn); } return(table); }
private static void ProcessSystemDefineEntityColumn(PdmGridClrDto aPdmGridEntity, DataTable toReturnDcuTable, DataTable aDtResult, int gridColumnId) { var dictRowId = aDtResult.AsDataRowEnumerable().ToDictionary(dtRow => (int)dtRow["Id"], dtRow => dtRow); foreach (DataRow dataRow in toReturnDcuTable.Rows) { string valueId = dataRow[gridColumnId.ToString()] as string; if (!string.IsNullOrEmpty(valueId)) { // int.Parse ( int intValueId = int.Parse(valueId); if (dictRowId.ContainsKey(intValueId)) { var dtRow = dictRowId[intValueId]; foreach (var dependentEntityColumn in aPdmGridEntity.MasterEntityDepdentColumn[gridColumnId]) { foreach (DataColumn aDtcolumn in aDtResult.Columns) { if (aDtcolumn.ColumnName == dependentEntityColumn.InternalCode) { // cannot pass DataTable column DataType to the silverlight, SL doesn't support Sql.client type data object value = ControlTypeValueConverter.ConvertValueToObject(dtRow[aDtcolumn], dependentEntityColumn.ColumnTypeId); if (value != null) { dataRow[dependentEntityColumn.GridColumnId.ToString()] = value; } //else //{} } } } } } } }
} // key1: blockId, key2:referecne, value public static Dictionary <int, Dictionary <int, object> > RetrieveReferenceSimpleDcutValue(IEnumerable <int> referenceIds, List <PdmBlockSubItemClrDto> subItemList) { // subitemIds = subitemIds.Distinct().ToArray (); if (referenceIds.Count() == 0 || subItemList.Count == 0) { return(new Dictionary <int, Dictionary <int, object> >()); } Dictionary <int, int> dictSuibtemIdControType = new Dictionary <int, int>(); foreach (var blockSubitem in subItemList) { dictSuibtemIdControType.Add(blockSubitem.SubItemId, blockSubitem.ControlType); } Dictionary <int, Dictionary <int, object> > toReturn = new Dictionary <int, Dictionary <int, object> >(); if (referenceIds == null || referenceIds.Count() == 0) { return(toReturn); } var subitemIds = subItemList.Select(o => o.SubItemId).ToList(); var referenceInClause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(referenceIds, GridColumnConstantName.ProductReferenceID, false); var subitemIdInclause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(subitemIds, GridColumnConstantName.SubItemID, true); StringBuilder aQuery = new StringBuilder(); // aQuery.Append( string" SELECT ProductReferenceID,BlockID, GridID, RowID, RowValueGUID ,Sort,"); aQuery.Append(" SELECT " + GridColumnConstantName.ProductReferenceID + ", " + GridColumnConstantName.SubItemID + ", " + GridColumnConstantName.ValueText ); string queryString = aQuery.ToString() + " from pdmSearchSimpleDcuValue where " + referenceInClause + subitemIdInclause; CLROutput.OutputDebug("from pdmSearchSimpleDcuValu" + queryString); DataTable dtSimpleValue; using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString)) { conn.Open(); DataAcessHelper.ExecuteReadUnCommmited(conn); dtSimpleValue = DataAcessHelper.GetDataTableQueryResult(conn, queryString); DataAcessHelper.ExecuteReadCommmited(conn); } var subItemQuery = from row in dtSimpleValue.AsDataRowEnumerable() group row by new { ProductReferenceID = (int)row[GridColumnConstantName.ProductReferenceID] } into grp orderby grp.Key.ProductReferenceID select new { Key = grp.Key.ProductReferenceID, SubitemIDAndValueList = grp.Select(r => new { id = (int)r[GridColumnConstantName.SubItemID], value = r[GridColumnConstantName.ValueText] }), }; foreach (var o in subItemQuery) { Dictionary <int, object> dictSubitemValue = new Dictionary <int, object>(); foreach (var subitem in o.SubitemIDAndValueList) { var value = ControlTypeValueConverter.ConvertValueToObject(subitem.value, dictSuibtemIdControType[subitem.id]); dictSubitemValue.Add(subitem.id, value); } var notInDict = subitemIds.Except(dictSubitemValue.Keys); foreach (var subitId in notInDict) { dictSubitemValue.Add(subitId, null); } toReturn.Add(o.Key, dictSubitemValue); } return(toReturn); } // key1: blockId, key2:referecne, value
public static DataTable RetrieveDataTableReferenceSimpleDcutValue(IEnumerable <string> referenceIds, List <PdmBlockSubItemClrDto> subItemList, bool isShowLookUpItem = true) { Dictionary <int, int> dictSuibtemIdControType = new Dictionary <int, int>(); foreach (var blockSubitem in subItemList) { dictSuibtemIdControType.Add(blockSubitem.SubItemId, blockSubitem.ControlType); } Dictionary <int, Dictionary <int, object> > toReturn = new Dictionary <int, Dictionary <int, object> >(); //if (referenceIds == null || referenceIds.Count() == 0) // return simpleDcuTable; var subitemIds = subItemList.Select(o => o.SubItemId).ToList(); if (subitemIds.Count == 0) { return(new DataTable()); } string referenceInClause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(referenceIds, GridColumnConstantName.ProductReferenceID, true); if (referenceIds.Count() == 1 && referenceIds.ElementAt(0) == "-2") { referenceInClause = string.Empty; } string subitemIdInclause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(subitemIds, GridColumnConstantName.SubItemID, false); StringBuilder aQuery = new StringBuilder(); // aQuery.Append( string" SELECT ProductReferenceID,BlockID, GridID, RowID, RowValueGUID ,Sort,"); aQuery.Append(" SELECT " + GridColumnConstantName.ProductReferenceID + ", " + GridColumnConstantName.SubItemID + ", " + GridColumnConstantName.ValueText ); string queryString = aQuery.ToString() + " from pdmSearchSimpleDcuValue where " + subitemIdInclause + referenceInClause; DataTable dtSimpleValue; var allSubitemeEntityIds = subItemList.Where(o => o.EntityId.HasValue).Select(o => o.EntityId.Value).ToList(); Dictionary <int, Dictionary <object, string> > dictKeyEntityDictKeyIdDisplayString = PLMSEntityClrBL.GetDictEntityDictDisplayString(allSubitemeEntityIds); using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString)) { conn.Open(); DataAcessHelper.ExecuteReadUnCommmited(conn); dtSimpleValue = DataAcessHelper.GetDataTableQueryResult(conn, queryString); // dictKeyEntityDictKeyIdDisplayString = PLMSEntityClrBL.GetDictEntityDictDisplayString(allSubitemeEntityIds, conn); DataAcessHelper.ExecuteReadCommmited(conn); } var subItemQuery = from row in dtSimpleValue.AsDataRowEnumerable() group row by new { ProductReferenceID = (int)row[GridColumnConstantName.ProductReferenceID] } into grp orderby grp.Key.ProductReferenceID select new { Key = grp.Key.ProductReferenceID, SubitemIDAndValueList = grp.Select(r => new { id = (int)r[GridColumnConstantName.SubItemID], value = r[GridColumnConstantName.ValueText] }), }; DataTable roReturnDcuTable = CreateDataTableStrcutureFromBlockSubitem(subItemList); foreach (var o in subItemQuery) { //Dictionary<int, object> dictSubitemValue = new Dictionary<int, object>(); DataRow dataRow = roReturnDcuTable.NewRow(); dataRow[GridColumnConstantName.ProductReferenceID] = o.Key; foreach (var subitem in o.SubitemIDAndValueList) { object value = ControlTypeValueConverter.ConvertValueToObject(subitem.value, dictSuibtemIdControType[subitem.id]); if (value == null) { dataRow[subitem.id.ToString()] = DBNull.Value; } else { // CLROutput.Output("convervalue=" + value); dataRow[subitem.id.ToString()] = value; // CLROutput.Output("dataRow[subitem.id.ToString()]" + dataRow[subitem.id.ToString()]); } } roReturnDcuTable.Rows.Add(dataRow); } if (isShowLookUpItem) { List <PdmBlockSubItemClrDto> dDLSubitemDtoList = subItemList.Where(o => o.ControlType == (int)EmControlType.DDL && o.EntityId.HasValue).ToList(); foreach (var dictDDLSubitemDto in dDLSubitemDtoList) { int entityId = dictDDLSubitemDto.EntityId.Value; string stringSubItemId = dictDDLSubitemDto.SubItemId.ToString(); if (dictKeyEntityDictKeyIdDisplayString.ContainsKey(entityId)) { Dictionary <object, string> lookUpItem = dictKeyEntityDictKeyIdDisplayString[entityId]; foreach (DataRow row in roReturnDcuTable.Rows) { int?lookupid = ControlTypeValueConverter.ConvertValueToInt(row[stringSubItemId]); if (lookupid.HasValue) { int idvalue = lookupid.Value; if (lookUpItem.ContainsKey(idvalue)) { row[stringSubItemId] = lookUpItem[idvalue];; CLROutput.OutputDebug("entityID_idvalue+dislayvalue=" + entityId.ToString() + "_" + idvalue.ToString() + "_" + "_" + lookUpItem[idvalue]); } } } } } } return(roReturnDcuTable); } // key1: blockId, key2:referecne, value
//blockPdmGridDto, gridcolumnResultDataTable public static void SetupBodypartName(PdmGridClrDto aPdmGridClrDto, DataTable gridcolumnResultDataTable) { if (string.IsNullOrEmpty(aPdmGridClrDto.InternalCode)) { return; } // get all colunName if (!( aPdmGridClrDto.InternalCode == GridRegister.GridSpecGrading.SpecGradingGrid || aPdmGridClrDto.InternalCode == GridRegister.GridSpecFit.SpecFitGrid || aPdmGridClrDto.InternalCode == GridRegister.GridSpecQC.SpecQCGrid )) { return; } string PomSketchIDColumnName = "PomSketchID"; gridcolumnResultDataTable.Columns.Add(PomSketchIDColumnName); DataColumn bodypartIdColumn = null; DataColumn bodypartCodeColumn = null; DataColumn bodypartNameColumn = null; DataColumn bodypartDescColumn = null; DataColumn bodypartHowToColumn = null; foreach (DataColumn column in gridcolumnResultDataTable.Columns) { int idColumnId = aPdmGridClrDto[GridRegister.GridSpecFit.BodyPartDetailIDWDimDetailID].GridColumnId; if (column.ColumnName.EndsWith("_" + idColumnId)) { bodypartIdColumn = column; } int codeColumnId = aPdmGridClrDto[GridRegister.GridSpecFit.BodyPartCustomerCode].GridColumnId; if (column.ColumnName.EndsWith("_" + codeColumnId)) { bodypartCodeColumn = column; } int nameColumnId = aPdmGridClrDto[GridRegister.GridSpecFit.BodyPartName].GridColumnId; if (column.ColumnName.EndsWith("_" + nameColumnId)) { bodypartNameColumn = column; } int descColumnId = aPdmGridClrDto[GridRegister.GridSpecFit.BodyPartDesc].GridColumnId; if (column.ColumnName.EndsWith("_" + descColumnId)) { bodypartDescColumn = column; } int howtoColumnId = aPdmGridClrDto[GridRegister.GridSpecFit.HowToMeasure].GridColumnId; if (column.ColumnName.EndsWith("_" + howtoColumnId)) { bodypartHowToColumn = column; } } // gridcolumnResultDataTable.AsDataRowEnumerable ().Select (o=>o Dictionary <DataRow, int> dictRowAndBodypartIdForColumnResultDataTable = new Dictionary <DataRow, int>(); List <int> bodypartIds = new List <int> (); foreach (DataRow aRow in gridcolumnResultDataTable.Rows) { int?bodyparid = ControlTypeValueConverter.ConvertValueToInt(aRow[bodypartIdColumn]); if (bodyparid.HasValue) { bodypartIds.Add(bodyparid.Value); dictRowAndBodypartIdForColumnResultDataTable.Add(aRow, bodyparid.Value); } } if (bodypartIds.Count > 0) { string query = @" select BodyPartID , Code , BodyPartName ,Description ,MeasureInstruction,SketchID from pdmV2kBodyPart "; string inclause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(bodypartIds.Distinct(), "BodyPartID", false); query = query + " where " + inclause; DataTable bodypartDataTable = null; using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString)) { conn.Open(); bodypartDataTable = DataAcessHelper.GetDataTableQueryResult(conn, query); } Dictionary <int, DataRow> dictbodyRowAndId = new Dictionary <int, DataRow>(); foreach (DataRow aDataRow in bodypartDataTable.Rows) { dictbodyRowAndId.Add((int)aDataRow["BodyPartID"], aDataRow); } // EnablePomCodeSynchonizeWithProduct //EnablePomNameSynchonizeWithProduct //EnablePomDescriptionSynchonizeWithProduct //EnablePomMeasureInstrcutionSynchonizeWithProduct bool isEnableCode = PLMConstantString.DictPdmSetup["EnablePomCodeSynchonizeWithProduct"].SetupValue.ToLower() == "true"; bool isEnableName = PLMConstantString.DictPdmSetup["EnablePomNameSynchonizeWithProduct"].SetupValue.ToLower() == "true"; bool isEnableDesc = PLMConstantString.DictPdmSetup["EnablePomDescriptionSynchonizeWithProduct"].SetupValue.ToLower() == "true"; bool isEnableMeasure = PLMConstantString.DictPdmSetup["EnablePomMeasureInstrcutionSynchonizeWithProduct"].SetupValue.ToLower() == "true"; foreach (DataRow gridRow in dictRowAndBodypartIdForColumnResultDataTable.Keys) { int bodyId = dictRowAndBodypartIdForColumnResultDataTable[gridRow]; if (dictbodyRowAndId.ContainsKey(bodyId)) { DataRow bodyparRow = dictbodyRowAndId[bodyId]; if (isEnableCode) { gridRow[bodypartCodeColumn] = bodyparRow["Code"] as string; } if (isEnableName) { gridRow[bodypartNameColumn] = bodyparRow["BodyPartName"] as string; } if (isEnableDesc) { gridRow[bodypartDescColumn] = bodyparRow["Description"] as string; } if (isEnableMeasure) { gridRow[bodypartHowToColumn] = bodyparRow["MeasureInstruction"] as string; } gridRow[PomSketchIDColumnName] = bodyparRow["SketchID"] as int?; } } } }
public static void GetGradingSizeValue(int tabId, int currentGridBlockId, int referenceId) { //if (string.IsNullOrEmpty(referenceId)) // return; PdmBlockClrDto dmBlockClrDto = PdmCacheManager.DictBlockCache[currentGridBlockId]; if (dmBlockClrDto.BlockPdmGridDto == null) { return; } bool IsGetAliasname = true; DataTable gridcolumnResultDataTable = PLMSGetGridValueHeler.LoadVariousGridColumnValue(tabId, currentGridBlockId, referenceId.ToString(), true, dmBlockClrDto, false, true, IsGetAliasname); int baseSizeIndexFromZero = 0; int totalSizeNumber = 0; using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString)) { //SqlContext. conn.Open(); DataAcessHelper.ExecuteReadUnCommmited(conn); PLMSpecGradingHelper.GetSpecSizeRunTable(referenceId, conn, out baseSizeIndexFromZero, out totalSizeNumber); CLROutput.OutputDebug("baseSizeIndexFromZero" + baseSizeIndexFromZero.ToString() + "totalSizeNumber" + totalSizeNumber.ToString()); DataAcessHelper.ExecuteReadCommmited(conn); } PdmGridClrDto aPdmGridClrDto = dmBlockClrDto.BlockPdmGridDto; int baseSizeColumnId = aPdmGridClrDto[GridRegister.GridSpecGrading.GradingBaseSize].GridColumnId; List <DataColumn> gradingSizeNameList = new List <DataColumn>(); DataColumn baseSizeColumn = null; foreach (DataColumn column in gridcolumnResultDataTable.Columns) { if (column.ColumnName.StartsWith(GridRegister.GridSpecGrading.GradingSize)) { gradingSizeNameList.Add(column); } if (column.ColumnName.EndsWith("_" + baseSizeColumnId)) { baseSizeColumn = column; } } //GridRegister.GridSpecGrading. foreach (DataRow dataRow in gridcolumnResultDataTable.Rows) { List <double> gradingValue = new List <double>(); List <String> columnName = new List <string>(); double basesize = ControlTypeValueConverter.ConvertValueToDoubleWithDefautZero(dataRow[baseSizeColumn.ColumnName]); for (int i = 1; i <= totalSizeNumber; i++) { foreach (DataColumn sizecolumn in gradingSizeNameList) { string baseSizeColumnName = GridRegister.GridSpecGrading.GradingSize + i.ToString() + "_"; if (sizecolumn.ColumnName.StartsWith(baseSizeColumnName)) { double value = ControlTypeValueConverter.ConvertValueToDoubleWithDefautZero(dataRow[sizecolumn.ColumnName]); gradingValue.Add(value); columnName.Add(sizecolumn.ColumnName); } } } List <double> newValueList = PLMSpecGradingHelper.CaculateSizeValueWithGradingValue(gradingValue, basesize, baseSizeIndexFromZero); for (int i = 0; i < totalSizeNumber; i++) { string columnNmae = columnName[i]; string value = newValueList[i].ToString(); dataRow[columnNmae] = value; } } List <DataColumn> needConvertColumn = new List <DataColumn>(); foreach (DataColumn column in gridcolumnResultDataTable.Columns) { int baseSizeId = aPdmGridClrDto[GridRegister.GridSpecGrading.GradingBaseSize].GridColumnId; if (column.ColumnName.EndsWith("_" + baseSizeColumnId)) { needConvertColumn.Add(column); } int tolColumnId = aPdmGridClrDto[GridRegister.GridSpecGrading.Tolerance].GridColumnId; if (column.ColumnName.EndsWith("_" + tolColumnId)) { needConvertColumn.Add(column); } for (int i = 1; i <= 20; i++) { int sizeColumnIdId = aPdmGridClrDto[GridRegister.GridSpecGrading.GradingSize + i.ToString()].GridColumnId; if (column.ColumnName.EndsWith("_" + sizeColumnIdId)) { needConvertColumn.Add(column); } } } // need to get the bock size and unit of mesaure; //DefaultPOMUnitOfMeasure 1:INch, 2: Cm int?pomUnitOfmeasure = GetReferencePomOfUnitMeasure(referenceId); if (pomUnitOfmeasure.HasValue && pomUnitOfmeasure.Value == 1) { ConvertCMDatatableToInch(gridcolumnResultDataTable, needConvertColumn); } else // NO VALUE, NEED TO CHECK DEFAULT VALUE { if (PLMConstantString.DictPdmSetup["DefaultPOMUnitOfMeasure"].SetupValue == "1") { ConvertCMDatatableToInch(gridcolumnResultDataTable, needConvertColumn); } } CLROutput.SendDataTable(gridcolumnResultDataTable); }
// will return base size //GetSpecQcSizeRunTable public static DataTable GetSpecQcSelectedSizeForAllCopyTabsTable(int mainReferenceId, SqlConnection conn, int mainQcTabId) { Dictionary <string, int> dictSubitemInterlCodeAndId = SysDefinBlockHelper.GetDictInteralCodeSubItemId(conn, BlockRegister.SpecQCBlock.SpecQCBlockName); int sizeRunSubitemId = dictSubitemInterlCodeAndId[BlockRegister.SpecQCBlock.SpecFitSizeRun]; // int selecdSizeRunSubitemId = dictSubitemInterlCodeAndId[BlockRegister.SpecQCBlock.SpecSelectedSize]; // int SpecFitBaseSizeSubitemId = dictSubitemInterlCodeAndId[BlockRegister.SpecQCBlock.SpecFitBaseSize]; // Get MainTab SizeRunId string searchSubitemValue = @" select ValueText from PdmSearchSimpleDcuValue where ( SubItemID =@sizeRunSubitemId and ProductReferenceID = @ProductReferenceID ) "; SqlCommand cmd = new SqlCommand(searchSubitemValue, conn); SqlParameter pararselecdSizeRunSubitemId = new SqlParameter("@sizeRunSubitemId", sizeRunSubitemId); cmd.Parameters.Add(pararselecdSizeRunSubitemId); SqlParameter paraMainReferenceId = new SqlParameter("@ProductReferenceID", mainReferenceId); cmd.Parameters.Add(paraMainReferenceId); DataTable mainTabSizeRun = DataAcessHelper.GetDataTableQueryResult(cmd); if (mainTabSizeRun.Rows.Count == 0) { return(new DataTable()); } int?sizeRunId = ControlTypeValueConverter.ConvertValueToInt(mainTabSizeRun.Rows[0]["ValueText"]); if (!sizeRunId.HasValue) { return(new DataTable()); } // Get Copy Tab string queryCopyTab = @"SELECT CopyTabID, MainTabID, CopyTabReferenceID, Name, Description, Sort, MainReferenceID FROM pdmCopyTabReference WHERE (MainReferenceID = @MainReferenceID) AND (MainTabID =@MainTabID)"; List <SqlParameter> parameters = new List <SqlParameter> (); parameters.Add(new SqlParameter("@MainReferenceID", mainReferenceId)); parameters.Add(new SqlParameter("@MainTabID", mainQcTabId)); DataTable copyTabTable = DataAcessHelper.GetDataTableQueryResult(conn, queryCopyTab, parameters); List <int> allReferenceIds = new List <int>(); allReferenceIds.Add(mainReferenceId); // refere copy tab mapping Dictionary <int, string> dictReferenceTabName = new Dictionary <int, string>(); var pdmTabClrDto = PdmCacheManager.DictTabCache[mainQcTabId]; dictReferenceTabName.Add(mainReferenceId, pdmTabClrDto.TabName); // foreach ( DataRow row in foreach (DataRow row in copyTabTable.Rows) { int copyTabRefId = (int)row["CopyTabReferenceID"]; allReferenceIds.Add(copyTabRefId); dictReferenceTabName.Add(copyTabRefId, row["Name"].ToString()); } // Get QC seelct Size string productInclause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(allReferenceIds, "ProductReferenceID", true); string querySelectSize = @" select ProductReferenceID,SizeRunRotateID from PdmProductQcSize where TabID = " + mainQcTabId + productInclause; DataTable selectSizeDataTable = DataAcessHelper.GetDataTableQueryResult(conn, querySelectSize); // CLROutput.SendDataTable(selectSizeDataTable); Dictionary <int, List <int> > dictRefereneSelectSize = selectSizeDataTable.AsDataRowEnumerable().GroupBy(o => (int)o["ProductReferenceID"]).ToDictionary(g => g.Key, g => g.Select(r => (int)r["SizeRunRotateID"]).ToList()); // get Size run table // DataTable sizeRotateTable = GetSizeRotateTableWithSizerunId(conn, sizeRunId.Value ); DataTable sizeRotateTable = GetSpecGradingBlockSelectSizeRotateTable(mainReferenceId, conn); // Create Return table DataTable returnDataTble = new DataTable(); DataColumn tabNamecolumn = new DataColumn("TabName", typeof(string)); returnDataTble.Columns.Add(tabNamecolumn); for (int i = 1; i <= 20; i++) { DataColumn column = new DataColumn("Size" + i.ToString(), typeof(string)); returnDataTble.Columns.Add(column); } foreach (int refId in dictReferenceTabName.Keys) { DataRow aRow = returnDataTble.NewRow(); aRow["TabName"] = dictReferenceTabName[refId]; if (dictRefereneSelectSize.ContainsKey(refId)) { List <int> selectedSizeRotatedIds = dictRefereneSelectSize[refId]; int rowCount = 1; foreach (DataRow row in sizeRotateTable.Rows) { int rizeRotateId = (int)row["SizeRunRotateID"]; if (selectedSizeRotatedIds.Contains(rizeRotateId)) { aRow["Size" + rowCount.ToString()] = row["SizeName"]; } rowCount++; } } returnDataTble.Rows.Add(aRow); } return(returnDataTble); }