/// <summary>
        /// 開始進行志願序資料整合
        /// </summary>
        public void 開始進行志願序資料整合()
        {
            //整理志願序資料
            foreach (OnlineVolunteer each in VolunteerList)
            {
                if (StudentDic.ContainsKey(each.RefStudentId))
                {
                    //學生
                    OnlineStudent OnlineStud = StudentDic[each.RefStudentId];

                    if (!string.IsNullOrEmpty(each.Content))
                    {
                        XmlElement xml        = DSXmlHelper.LoadXml(each.Content);
                        int        ClubNumber = 1;
                        foreach (XmlElement node in xml.SelectNodes("Club"))
                        {
                            if (node.GetAttribute("Index") == ClubNumber.ToString())
                            {
                                string clubID = node.GetAttribute("Ref_Club_ID");
                                if (ClubDic.ContainsKey(clubID))
                                {
                                    //社團
                                    OnlineClub OnlineClub = ClubDic[clubID];
                                    if (!OnlineStud.VolunteerList.ContainsKey(ClubNumber))
                                    {
                                        OnlineStud.VolunteerList.Add(ClubNumber, OnlineClub);
                                    }
                                }
                            }
                            ClubNumber++;
                        }
                    }
                }
            }
        }
        void BGW_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            dataGridViewX1.Enabled = true;
            this.Text = "學生選填明細";

            if (!e.Cancelled)
            {
                if (e.Error == null)
                {
                    SetColumn();

                    #region 建立Row

                    //取得該班級的學生基本資料
                    List <一名學生> list = _VolRow._StudentDic.Values.ToList();
                    //依座號排序
                    list.Sort(SortMergeList);

                    foreach (一名學生 each in list)
                    {
                        DataGridViewRow row = new DataGridViewRow();
                        row.CreateCells(dataGridViewX1);
                        row.Cells[0].Value = each.seat_no.HasValue ? each.seat_no.Value.ToString() : ""; //座號
                        row.Cells[1].Value = each.student_name;                                          //姓名
                        row.Cells[2].Value = each.gender;                                                //姓名


                        if (_VolRow._Volunteer.ContainsKey(each.student_id))
                        {
                            #region 必須有填志願才會被填入社團資料
                            //學生基本資料
                            VolunteerRecord obj = _VolRow._Volunteer[each.student_id];

                            //ClubDic社團是從選社志願內的資料
                            //因此它為0時,就表示多數數資料都沒有填志願
                            if (ClubDic.Count != 0)
                            {
                                //取得單一學生志願序選填狀況
                                if (!string.IsNullOrEmpty(obj.Content))
                                {
                                    XmlElement Element = XmlHelper.LoadXml(obj.Content);
                                    foreach (XmlElement xml in Element.SelectNodes("Club"))
                                    {
                                        //所選填的必須只有設定之數量
                                        int ClubIndex = 0;
                                        int.TryParse(xml.GetAttribute("Index"), out ClubIndex);
                                        if (ClubIndex <= _By_V.學生選填志願數 && ClubIndex != 0)
                                        {
                                            string clubID = xml.GetAttribute("Ref_Club_ID");
                                            //是否包含此社團
                                            if (ClubDic.ContainsKey(clubID))
                                            {
                                                CLUBRecord cr = ClubDic[clubID];
                                                //+3是因為由第 3 Column起始
                                                row.Cells[ClubIndex + 2].Value    = cr.ClubName;
                                                row.Cells[ClubIndex + 2].ReadOnly = true;
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion
                        }

                        if (_VolRow._SCJDic.ContainsKey(each.student_id))
                        {
                            #region 當此學生有社團參與記錄時

                            SCJoin scj = _VolRow._SCJDic[each.student_id];
                            if (_VolRow._ClubDic.ContainsKey(scj.RefClubID))
                            {
                                CLUBRecord club = _VolRow._ClubDic[scj.RefClubID];
                                row.Cells[1].Value += "(" + club.ClubName + ")";

                                if (scj.Lock)
                                {
                                    foreach (DataGridViewCell cell in row.Cells)
                                    {
                                        cell.Style.BackColor = Color.GreenYellow;
                                    }
                                }
                                else
                                {
                                    foreach (DataGridViewCell cell in row.Cells)
                                    {
                                        cell.Style.BackColor = Color.Yellow;
                                    }
                                }
                            }

                            #endregion
                        }
                        else
                        {
                            StudentIDList.Add(each.student_id);
                        }

                        dataGridViewX1.Rows.Add(row);
                    }


                    #endregion
                }
                else
                {
                    MsgBox.Show("已發生錯誤!!\n" + e.Error.Message);
                }
            }
            else
            {
                MsgBox.Show("資料取得動作已取消");
            }
        }