public void SetWipEntities(List <AscmWipRequirementOperations> list)
 {
     if (list != null && list.Count > 0)
     {
         var    wipEntityIds = list.Select(P => P.wipEntityId).Distinct();
         var    count        = wipEntityIds.Count();
         string ids          = string.Empty;
         for (int i = 0; i < count; i++)
         {
             if (!string.IsNullOrEmpty(ids))
             {
                 ids += ",";
             }
             ids += wipEntityIds.ElementAt(i);
             if ((i + 1) % 500 == 0 || (i + 1) == count)
             {
                 if (!string.IsNullOrEmpty(ids))
                 {
                     string sql = "from AscmWipEntities where wipEntityId in (" + ids + ")";
                     IList <AscmWipEntities> ilistAscmWipEntities = YnDaoHelper.GetInstance().nHibernateHelper.Find <AscmWipEntities>(sql);
                     sql = "from AscmWipDiscreteJobs where wipEntityId in (" + ids + ")";
                     IList <AscmWipDiscreteJobs> ilistAscmWipDiscreteJobs = YnDaoHelper.GetInstance().nHibernateHelper.Find <AscmWipDiscreteJobs>(sql);
                     List <AscmWipEntities>      listAscmWipEntities      = null;
                     List <AscmWipDiscreteJobs>  listAscmWipDiscreteJobs  = null;
                     if (ilistAscmWipEntities != null && ilistAscmWipEntities.Count > 0)
                     {
                         listAscmWipEntities = YnBaseClass2.Helper.ConvertHelper.ConvertIListToList <AscmWipEntities>(ilistAscmWipEntities);
                     }
                     if (ilistAscmWipDiscreteJobs != null && ilistAscmWipDiscreteJobs.Count > 0)
                     {
                         listAscmWipDiscreteJobs = YnBaseClass2.Helper.ConvertHelper.ConvertIListToList <AscmWipDiscreteJobs>(ilistAscmWipDiscreteJobs);
                         AscmWipDiscreteJobsService.GetInstance().SetLookupValues(listAscmWipDiscreteJobs);
                         AscmWipDiscreteJobsService.GetInstance().SetScheduleGroups(listAscmWipDiscreteJobs);
                         AscmWipDiscreteJobsService.GetInstance().SetMaterialItem(listAscmWipDiscreteJobs);
                     }
                     foreach (AscmWipRequirementOperations wipRequirementOperations in list)
                     {
                         if (listAscmWipEntities != null)
                         {
                             AscmWipEntities ascmWipEntities = listAscmWipEntities.Find(e => e.wipEntityId == wipRequirementOperations.wipEntityId);
                             if (ascmWipEntities != null)
                             {
                                 wipRequirementOperations.ascmWipEntities = ascmWipEntities;
                             }
                         }
                         if (listAscmWipDiscreteJobs != null)
                         {
                             AscmWipDiscreteJobs ascmWipDiscreteJobs = listAscmWipDiscreteJobs.Find(e => e.wipEntityId == wipRequirementOperations.wipEntityId);
                             if (ascmWipDiscreteJobs != null)
                             {
                                 wipRequirementOperations.ascmWipDiscreteJobs = ascmWipDiscreteJobs;
                             }
                         }
                     }
                 }
                 ids = string.Empty;
             }
         }
     }
 }
        private void advTreeGroup_BeforeExpand(object sender, AdvTreeNodeCancelEventArgs e)
        {
            Node nodeParent = e.Node;

            nodeParent.Nodes.Clear();

            AscmWipDiscreteJobs ascmGetMaterialTask = nodeParent.Tag as AscmWipDiscreteJobs;

            if (ascmGetMaterialTask != null)
            {
                //Structure nodes columns
                StructureAdvTreeSecondLevelColumns(nodeParent);
                //Get discretejobs list
                List <AscmWipRequirementOperations> list = DataBindAdvTreeSecondLevelNode(ascmGetMaterialTask.wipEntityId, ascmGetMaterialTask.mtlCategoryStatus);
                if (list != null && list.Count > 0)
                {
                    advTreeGroup.BeginInit();
                    StrucureAdvTreeSecondLevelNode(list, nodeParent);
                    advTreeGroup.EndInit();
                }
            }
        }
        private void advTreeGroup_NodeClick(object sender, TreeNodeMouseEventArgs e)
        {
            e.Node.Checked = !e.Node.Checked;

            if (!string.IsNullOrEmpty(releaseHeaderIds))
            {
                releaseHeaderIds += ",";
            }

            if (e.Node.Parent != null)
            {
                //Select discretejob to get data, and then excuted mark operation
                //if (e.Node.Parent.Tag as AscmWipDiscreteJobs != null)
                //    this.taskId = ((AscmWipDiscreteJobs)e.Node.Parent.Tag).wipEntityId.ToString();

                if (e.Node.Tag as AscmWipRequirementOperations != null)
                {
                    this.jobId = ((AscmWipRequirementOperations)e.Node.Tag).id.ToString();
                }

                //Confirmed tasks Id or discrete jobs Id
                string getMaterialId = "[" + this.jobId + "]";
                if (e.Node.Checked)
                {
                    releaseHeaderIds += getMaterialId;
                }
                else
                {
                    if (!string.IsNullOrEmpty(releaseHeaderIds))
                    {
                        releaseHeaderIds = releaseHeaderIds.Replace(getMaterialId, "");
                    }
                }
            }
            else
            {
                //Select task's details
                if (e.Node.Tag as AscmWipDiscreteJobs != null)
                {
                    this.taskDetails = (AscmWipDiscreteJobs)e.Node.Tag;
                }

                //Select the job associated with the selected task
                if (e.Node.Expanded)
                {
                    foreach (Node node in e.Node.Nodes)
                    {
                        node.Checked = e.Node.Checked;
                    }
                }

                //Confirmed tasks Id or discrete jobs Id
                string getMaterialId = this.taskDetails.wipEntityId.ToString();
                if (!string.IsNullOrEmpty(this.taskDetails.mtlCategoryStatus))
                {
                    getMaterialId = getMaterialId + ":" + this.taskDetails.mtlCategoryStatus;
                }

                if (e.Node.Checked)
                {
                    releaseHeaderIds += getMaterialId;
                }
                else
                {
                    if (!string.IsNullOrEmpty(releaseHeaderIds))
                    {
                        string[] arr = releaseHeaderIds.Split(',');
                        releaseHeaderIds = "";
                        foreach (string s in arr)
                        {
                            if (s != getMaterialId && !string.IsNullOrEmpty(s))
                            {
                                if (!string.IsNullOrEmpty(releaseHeaderIds))
                                {
                                    releaseHeaderIds += ",";
                                }
                                releaseHeaderIds += s;
                            }
                        }
                        //releaseHeaderIds = releaseHeaderIds.Replace(getMaterialId, "");
                    }
                }
            }
        }