private void initUI()
        {
            this.pnlQArea.Controls.Clear();

            UDT_ABCardTemplateDefinitionDef subject_template = (UDT_ABCardTemplateDefinitionDef)this.comboBoxEx1.SelectedItem;

            this.currentTemplate = subject_template;

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(subject_template.Content);
            this.subjUim = new SubjectUIMaker(xmlDoc.DocumentElement, this.pnlQArea);
            this.subjUim.OnContentChange += new SubjectUIMaker.ContentChange(subjUim_OnContentChange);
            this.subjUim.ResetContent();
            this.panel1.Height = this.pnlQArea.Height;
            this.Height        = this.panel1.Height + 50;
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            List <UDT_ABCardTemplateDefinitionDef> updateList  = new List <UDT_ABCardTemplateDefinitionDef>();
            List <UDT_ABCardTemplateDefinitionDef> insertrList = new List <UDT_ABCardTemplateDefinitionDef>();
            List <UDT_ABCardTemplateDefinitionDef> deleteList  = new List <UDT_ABCardTemplateDefinitionDef>();
            List <string> UIDList = new List <string>();

            foreach (DataGridViewRow dgvr in dgSetTemplate.Rows)
            {
                if (dgvr.IsNewRow)
                {
                    continue;
                }
                UDT_ABCardTemplateDefinitionDef data = dgvr.Tag as UDT_ABCardTemplateDefinitionDef;
                if (data != null)
                {
                    if (dgvr.Cells[colXML.Index].Value != null)
                    {
                        data.Content = dgvr.Cells[colXML.Index].Value.ToString();
                    }
                    else
                    {
                        data.Content = "";
                    }

                    if (dgvr.Cells[colName.Index].Value != null)
                    {
                        data.SubjectName = dgvr.Cells[colName.Index].Value.ToString();
                    }
                    else
                    {
                        data.SubjectName = "";
                    }

                    if (!string.IsNullOrEmpty(data.UID))
                    {
                        updateList.Add(data);
                        UIDList.Add(data.UID);
                    }
                }
                else
                {
                    UDT_ABCardTemplateDefinitionDef dataI = new UDT_ABCardTemplateDefinitionDef();
                    if (dgvr.Cells[colXML.Index].Value != null)
                    {
                        dataI.Content = dgvr.Cells[colXML.Index].Value.ToString();
                    }
                    else
                    {
                        dataI.Content = "";
                    }

                    if (dgvr.Cells[colName.Index].Value != null)
                    {
                        dataI.SubjectName = dgvr.Cells[colName.Index].Value.ToString();
                    }
                    else
                    {
                        dataI.SubjectName = "";
                    }

                    insertrList.Add(dataI);
                }
            }

            // delete
            foreach (UDT_ABCardTemplateDefinitionDef data in ABCardTemplate)
            {
                if (!UIDList.Contains(data.UID))
                {
                    data.Deleted = true;
                    deleteList.Add(data);
                }
            }

            if (deleteList.Count > 0)
            {
                UDTTransfer.DeleteABCardTemplate(deleteList);
            }

            if (updateList.Count > 0 || insertrList.Count > 0)
            {
                if (updateList.Count > 0)
                {
                    UDTTransfer.UpdateABCardTemplate(updateList);
                }

                if (insertrList.Count > 0)
                {
                    UDTTransfer.InsertABCardTemplate(insertrList);
                }

                FISCA.Presentation.Controls.MsgBox.Show("儲存完成.");
            }

            btnSave.Enabled = false;
        }