private void GenMasterTableData(ref PccErrMsg myLabel)
    {
        #region 取得Login的使用者是否有刪除的權限

        GetMenuAuth myAuth = new GetMenuAuth();
        myAuth.AspxFile = "FactGroupManage104.aspx";
        bool del_auth = myAuth.IsDeleteAuth();

        #endregion

        #region 取得廠群組的主資料ByUpID

        bs_FactGroupManage mybs = new bs_FactGroupManage(ConfigurationManager.AppSettings["ConnectionType"], ConfigurationManager.AppSettings["ConnectionServer"], ConfigurationManager.AppSettings["ConnectionDB"], ConfigurationManager.AppSettings["ConnectionUser"], ConfigurationManager.AppSettings["ConnectionPwd"], Session["UserIDAndName"].ToString(), ConfigurationManager.AppSettings["EventLogPath"]);
        PccMsg myMsg = new PccMsg();
        myMsg.CreateFirstNode("StartRecord", PageControl1.StartRecord.ToString());
        myMsg.CreateFirstNode("PageSize", PageControl1.PageSize.ToString());
        myMsg.CreateFirstNode("Up_Id", m_SrcUp_Id);
        myMsg.CreateFirstNode("Ap_Id", m_ApID);
        myMsg.CreateFirstNode("Fgrp_Nm", TxtQueryFgrpNm.Text);
        string strXML = myMsg.GetXmlStr;

        DataSet myDS_FGRPDs = mybs.DoReturnDataSet("Get_DS_FGRPByUpID", strXML, "");
        DataTable myDS_FGRPData = myDS_FGRPDs.Tables["DS_FGRPByUpID"];

        #endregion

        if (myDS_FGRPData != null && myDS_FGRPData.Rows.Count > 0)
        {
            #region 定義基本變數

            int MasterCount = 0;
            string MasterStyle = string.Empty;
            PccMsg myTempMsg;
            PccMsg myMsg1;
            PccRow myRow;
            //取出資料總筆數
            PageControl1.TotalSize = myDS_FGRPDs.Tables["TCounts"].Rows[0]["Counts"].ToString();
            PageControl1.BuildPager();

            #endregion

            #region 明細資料類別之共同參數

            myMsg.LoadXml();
            myMsg.CreateFirstNode("TableClass", "ActDocTB");
            myMsg.CreateFirstNode("RowHeaderClass", "TDShowHeader");
            myMsg.CreateFirstNode("RowClass1", "ffd000");
            myMsg.CreateFirstNode("RowClass2", "fff000");
            string strClassXML = myMsg.GetXmlStr;

            XmlElement myNode;
            //要取得明細資料的Table變數
            DataTable tblUserGroup, tblFactGroup;

            #endregion

            #region 內建廠別明細資料的欄位參數

            string[] FFields = { "編號", "廠別", "廠別名稱", "事業群", "公司編號", "刪除" };
            int[] FFieldsPercent = { 5, 15, 35, 20, 15, 10 };
            string[] FFieldsItem = { "--NO--", "fact_no", "fact_nm", "fgrp_nm", "comp_no", "factgrp_id" };
            string[] FFieldType = new string[6];
            FFieldType[0] = "--NO--";
            FFieldType[1] = "<PccMsg><Type>Text</Type></PccMsg>";
            FFieldType[2] = "<PccMsg><Type>Text</Type></PccMsg>";
            FFieldType[3] = "<PccMsg><Type>Text</Type></PccMsg>";
            FFieldType[4] = "<PccMsg><Type>Text</Type></PccMsg>";

            #endregion

            #region 內建使用者明細資料的欄位參數

            string[] UFields = { "編號", "電子郵件帳號", "姓名", "廠別", "事業群", "分機", "刪除" };
            int[] UFieldsPercent = { 5, 30, 15, 15, 15, 10, 10 };
            string[] UFieldsItem = { "--NO--", "email", "user_desc", "fact_no", "fgrp_nm", "ext", "usergrp_id" };
            string[] UFieldType = new string[7];
            UFieldType[0] = "--NO--";
            UFieldType[1] = "<PccMsg><Type>Text</Type></PccMsg>";
            UFieldType[2] = "<PccMsg><Type>Text</Type></PccMsg>";
            UFieldType[3] = "<PccMsg><Type>Text</Type></PccMsg>";
            UFieldType[4] = "<PccMsg><Type>Text</Type></PccMsg>";
            UFieldType[5] = "<PccMsg><Type>Text</Type></PccMsg>";

            #endregion

            //再利用此Table再取得其每一列的資料,再Gen出主要的Table Row.
            foreach (DataRow myMasterRow in myDS_FGRPData.Rows)
            {
                #region 主要廠群組的資料列設定

                if (MasterCount % 2 == 0) MasterStyle = "eee000"; else MasterStyle = "fff000";
                myRow = new PccRow("", HorizontalAlign.Center, 0, 0);
                myRow.SetRowCss(MasterStyle);
                //編號
                myRow.AddTextCell(PageControl1.ListCount, 5);
                //廠群組名稱
                if (myAuth.IsAddAuth())
                {
                    myTempMsg = new PccMsg();
                    myTempMsg.CreateFirstNode("Href", PICKFACT + "?ApID=" + m_ApID + "&SrcUp_Id=" + m_SrcUp_Id + "&Up_Id=" + myMasterRow["Up_Id"].ToString() + "&Method=" + GetMethod("PickFactToFgrpFunc", "Fgrp_Id", "Fgrp_Nm", myMasterRow) + "&QueryCondition=" + GetQueryCondition());
                    myTempMsg.CreateFirstNode("Text", myMasterRow["Fgrp_Nm"].ToString().Trim());
                    myRow.AddLinkHrefCell(myTempMsg.GetXmlStr, 56);
                }
                else
                {
                    myRow.AddTextCell(myMasterRow["Fgrp_Nm"].ToString(), 56);
                }

                //廠別檢視
                myTempMsg = new PccMsg();
                myTempMsg.CreateFirstNode("ToolTip", "檢視所屬廠別");
                myTempMsg.CreateFirstNode("LinkID", "HLinkView" + myMasterRow["Fgrp_Id"].ToString());
                myTempMsg.CreateFirstNode("Image", Session["PageLayer"] + "images/detal.gif");
                myTempMsg.CreateFirstNode("ClickFun", "doSection(view_F" + MasterCount.ToString() + ")");
                myRow.AddLinkCell(myTempMsg.GetXmlStr, 12);
                //使用者檢視
                myTempMsg = new PccMsg();
                myTempMsg.CreateFirstNode("ToolTip", "檢視所屬使用者");
                myTempMsg.CreateFirstNode("LinkID", "HLinkView" + myMasterRow["Fgrp_Id"].ToString());
                myTempMsg.CreateFirstNode("Image", Session["PageLayer"] + "images/detal.gif");
                myTempMsg.CreateFirstNode("ClickFun", "doSection(view_U" + MasterCount.ToString() + ")");
                myRow.AddLinkCell(myTempMsg.GetXmlStr, 12);
                //管理
                myTempMsg = new PccMsg();
                //判斷是否和上層ID是一樣的
                if (myMasterRow["Fgrp_Id"].ToString() != Request.Params["SrcUp_Id"])
                {
                    //先加入修改的Item
                    if (myAuth.IsUpdateAuth())
                    {
                        myTempMsg.CreateNode("LinkButton");
                        myTempMsg.AddToNode("Image", Session["PageLayer"] + "images/edit.gif");
                        myTempMsg.AddToNode("ToolTip", myLabel.GetErrMsg("lbl0014", "SysManager/ApManager"));
                        myTempMsg.AddToNode("href", MYURL + "?ApID=" + m_ApID + "&SrcUp_Id=" + m_SrcUp_Id + "&Up_Id=" + myMasterRow["Up_Id"].ToString());
                        myTempMsg.AddToNode("QueryCondition", GetQueryCondition());
                        myTempMsg.AddToNode("Method", GetMethod("MasterUpdateFunc", "Fgrp_Id", "Fgrp_Nm", myMasterRow));
                        myTempMsg.UpdateNode();
                    }
                    if (del_auth)
                    {
                        //再加入刪除的Item
                        myTempMsg.CreateNode("LinkButton");
                        myTempMsg.AddToNode("Image", Session["PageLayer"] + "images/del.gif");
                        myTempMsg.AddToNode("ToolTip", myLabel.GetErrMsg("lbl0015", "SysManager/ApManager"));
                        myTempMsg.AddToNode("href", MYURL + "?ApID=" + m_ApID + "&SrcUp_Id=" + m_SrcUp_Id + "&Up_Id=" + myMasterRow["Up_Id"].ToString());
                        myTempMsg.AddToNode("QueryCondition", GetQueryCondition());
                        myTempMsg.AddToNode("Method", GetMethod("MasterDelFunc", "Fgrp_Id", "Fgrp_Nm", myMasterRow));
                        myTempMsg.UpdateNode();
                    }
                    //再加入加入使用者的Item
                    if (myAuth.IsAddAuth())
                    {
                        myTempMsg.CreateNode("LinkButton");
                        myTempMsg.AddToNode("Image", Session["PageLayer"] + "images/add.gif");
                        myTempMsg.AddToNode("ToolTip", "加入使用者");
                        myTempMsg.AddToNode("href", PICKUSER + "?ApID=" + m_ApID + "&SrcUp_Id=" + m_SrcUp_Id + "&Up_Id=" + myMasterRow["Up_Id"].ToString());
                        myTempMsg.AddToNode("QueryCondition", GetQueryCondition());
                        myTempMsg.AddToNode("Method", GetMethod("AddUserFunc", "Fgrp_Id", "Fgrp_Nm", myMasterRow));
                        myTempMsg.UpdateNode();
                    }
                }

                myRow.AddMultiLinkCell(myTempMsg.GetXmlStr, 15);
                TblDs_Fgrp.Rows.Add(myRow.Row);

                #endregion

                #region 內建廠別明細資料的欄位參數,此處會取得資料,並設定給主表格

                //設定廠別明細欄位中多個Link Image的參數
                myMsg1 = new PccMsg();

                if (del_auth && myMasterRow["Fgrp_Id"].ToString() != Request.Params["SrcUp_Id"])
                {
                    myMsg1.CreateFirstNode("Type", "MultiLink");

                    myMsg1.CreateNode("LinkButton");
                    myMsg1.AddToNode("Image", Session["PageLayer"] + "images/del.gif");
                    myMsg1.AddToNode("ToolTip", "刪除此廠別與此廠群組之關係");
                    myMsg1.AddToNode("href", MYURL + "?ApID=" + m_ApID + "&SrcUp_Id=" + m_SrcUp_Id + "&Up_Id=" + myMasterRow["Up_Id"].ToString() + "&Fgrp_Nm=" + myMasterRow["Fgrp_Nm"].ToString());
                    myMsg1.AddToNode("QueryCondition", GetQueryCondition());
                    myNode = myMsg1.CreateParentNode("Method");
                    myMsg1.AddToNode("MethodName", "FactDelFunc", ref myNode);
                    myMsg1.AddToNode("Key", "factgrp_id", ref myNode);
                    myMsg1.AddToNode("KeyOther", "fact_no", ref myNode);
                    myMsg1.UpdateNode(myNode);
                    myMsg1.UpdateNode();

                }
                else
                {
                    myMsg1.CreateFirstNode("Type", "Space");
                }

                FFieldType[5] = myMsg1.GetXmlStr;

                //設定要取得廠別資料的XML
                myMsg1.LoadXml();
                myMsg1.CreateFirstNode("Fgrp_Id", myMasterRow["Fgrp_Id"].ToString());
                tblFactGroup = mybs.DoReturnDataSet("get_DS_FACTGRPByFgrpID", myMsg1.GetXmlStr, string.Empty).Tables["DS_FACTGRP"];

                PccDetailTable myFDTable = new PccDetailTable("FDT" + myMasterRow["Fgrp_Id"].ToString());
                myFDTable.ClassXML = strClassXML;
                myFDTable.Fields = FFields;
                myFDTable.FieldsPercent = FFieldsPercent;
                myFDTable.FieldsItem = FFieldsItem;
                myFDTable.FieldsType = FFieldType;
                myFDTable.NewDataTable = tblFactGroup;

                myFDTable.Create();

                myRow.Reset();
                myRow.SetRowCss("off");
                myRow.SetRowID("view_F" + MasterCount);
                myRow.SetDefaultCellData("DGridTD", HorizontalAlign.Center, 0, 10);
                myRow.AddControl(myFDTable.NewTable, 100);

                TblDs_Fgrp.Rows.Add(myRow.Row);

                #endregion

                #region 內建使用者明細資料的欄位參數,此處會取得資料,並設定給主表格

                //設定廠別明細欄位中多個Link Image的參數
                myMsg1 = new PccMsg();

                if (del_auth && myMasterRow["Fgrp_Id"].ToString() != Request.Params["SrcUp_Id"])
                {
                    myMsg1.CreateFirstNode("Type", "MultiLink");

                    myMsg1.CreateNode("LinkButton");
                    myMsg1.AddToNode("Image", Session["PageLayer"] + "images/del.gif");
                    myMsg1.AddToNode("ToolTip", "刪除此使用者與此廠群組之關係");
                    myMsg1.AddToNode("href", MYURL + "?ApID=" + m_ApID + "&SrcUp_Id=" + m_SrcUp_Id + "&Up_Id=" + myMasterRow["Up_Id"].ToString() + "&Fgrp_Nm=" + myMasterRow["Fgrp_Nm"].ToString());
                    myMsg1.AddToNode("QueryCondition", GetQueryCondition());
                    myNode = myMsg1.CreateParentNode("Method");
                    myMsg1.AddToNode("MethodName", "UserDelFunc", ref myNode);
                    myMsg1.AddToNode("Key", "usergrp_id", ref myNode);
                    myMsg1.AddToNode("KeyOther", "user_desc", ref myNode);
                    myMsg1.UpdateNode(myNode);
                    myMsg1.UpdateNode();

                }
                else
                {
                    myMsg1.CreateFirstNode("Type", "Space");
                }

                UFieldType[6] = myMsg1.GetXmlStr;

                //設定要取得廠別資料的XML
                myMsg1.LoadXml();
                myMsg1.CreateFirstNode("Fgrp_Id", myMasterRow["Fgrp_Id"].ToString());
                tblUserGroup = mybs.DoReturnDataSet("get_DS_USERGRPByFgrpID", myMsg1.GetXmlStr, string.Empty).Tables["DS_USERGRP"];

                PccDetailTable myUDTable = new PccDetailTable("UDT" + myMasterRow["Fgrp_Id"].ToString());
                myUDTable.ClassXML = strClassXML;
                myUDTable.Fields = UFields;
                myUDTable.FieldsPercent = UFieldsPercent;
                myUDTable.FieldsItem = UFieldsItem;
                myUDTable.FieldsType = UFieldType;
                myUDTable.NewDataTable = tblUserGroup;

                myUDTable.Create();

                myRow.Reset();
                myRow.SetRowCss("off");
                myRow.SetRowID("view_U" + MasterCount);
                myRow.SetDefaultCellData("DGridTD", HorizontalAlign.Center, 0, 10);
                myRow.AddControl(myUDTable.NewTable, 100);

                TblDs_Fgrp.Rows.Add(myRow.Row);

                #endregion

                MasterCount += 1;
            } // end of foreach datarow
        }// end of if table count is 0
        else
        {
            PageControl1.TotalSize = "0";
            PageControl1.BuildPager();
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // 將使用者程式碼置於此以初始化網頁
        if (Session["UserID"] == null) return;

        GetMenuAuth myAuth = new GetMenuAuth();
        myAuth.AspxFile = "FactGroupManage104.aspx";

        //設定所要做的動作
        string strAction = string.Empty;

        if (myAuth.IsAddAuth())
            LbtnAddNewFgrp.Visible = true;

        m_ApID = Request.Params["ApID"];

        if (CheckQueryString("SrcUp_Id") != "")
        {
            m_SrcUp_Id = Request.Params["SrcUp_Id"];
        }

        if (CheckQueryString("Up_Id") != "")
        {
            m_Up_Id = Request.Params["Up_Id"];
        }

        PccMsg myMsg = new PccMsg();
        PccMsg myQueryMsg = new PccMsg();

        PccErrMsg myLabel = new PccErrMsg(Server.MapPath(Session["PageLayer"] + "XmlDoc"), Session["CodePage"].ToString(), "Label");

        if (CheckQueryString("Method") != "")
        {
            myMsg.LoadXml(Request.QueryString["Method"]);
            strAction = myMsg.Query("Method");
            switch (strAction)
            {
                case ("MasterUpdateFunc"):
                    m_FgrpId = myMsg.Query("Key");
                    break;
                case ("MasterDelFunc"):
                    m_FgrpId = myMsg.Query("Key");
                    break;
                case ("UpdFgrpFact"):
                    m_FgrpFactId = myMsg.Query("Key");
                    break;
                case "FactDelFunc":
                    m_FactGrpId = myMsg.Query("Key");
                    break;
                case "UserDelFunc":
                    m_UserGrpId = myMsg.Query("Key");
                    break;
            }

        }

        if (!IsPostBack)
        {
            string SrcUp_Id = string.Empty;
            if (Request.Params["SrcUp_Id"] != null)
            {
                SrcUp_Id = Request.Params["SrcUp_Id"].ToString();
                GenTree(ref TreeView1);
                //利用GetNodeIndex去設定m_CurrentNodeIndex的值,不需要再去設定一次Selected Lemor 20080312
                string aaa = GetNodeIndex(TreeView1.Nodes, SrcUp_Id);
                //TreeView1.FindNode(GetNodeIndex(TreeView1.Nodes, SrcUp_Id)).Selected = true;
                //TreeView1.SelectedValue = GetNodeIndex(TreeView1.Nodes, SrcUp_Id);
                //TreeView1.SelectedNodeIndex = GetNodeIndex(TreeView1.Nodes, SrcUp_Id);
                if (m_CurrentNodeIndex != null)
                {
                    string[] a;
                    a = m_CurrentNodeIndex.Split('/');
                    TreeView1.ExpandDepth = a.Length - 1;
                    //TreeView1.ExpandLevel = a.Length - 1;
                    TreeView1.FindNode(m_CurrentNodeIndex).Selected = true;
                    TreeView1.FindNode(m_CurrentNodeIndex).Expand();

                    //TreeView1.SelectedValue = m_CurrentNodeIndex;
                    //TreeView1.SelectedNodeIndex = m_CurrentNodeIndex;
                }
            }

            //設定之前User鍵入的查詢資料。 2005/5/23
            if (CheckQueryString("QueryCondition") != "")
            {
                myQueryMsg.LoadXml(CheckQueryString("QueryCondition"));
                TxtQueryFgrpNm.Text = myQueryMsg.Query("QueryCondition/TxtQueryFgrpNm");
            }

            SetLabel(ref myLabel);
            switch (strAction)
            {
                case ("MasterUpdateFunc"):
                    ViewState["ActionType"] = "MasterUpdateFunc";
                    PalFgrp.Visible = false;
                    PalAddFgrp.Visible = true;
                    TxtFgrpNm.Text = myMsg.Query("KeyOther");
                    break;
                case ("MasterDelFunc"):
                    ViewState["ActionType"] = "MasterDeleteFunc";
                    PalFgrp.Visible = false;
                    PalAddFgrp.Visible = false;
                    PalDelFgrp.Visible = true;
                    LblDelMsg.Text = "注意:此動作會刪除此廠群組(<b>" + myMsg.Query("KeyOther") + "</b>)以下的所有廠群組及其相關之廠別和使用者!";
                    break;
                case ("UpdFgrpFact"):
                    m_FgrpFactId = myMsg.Query("Key");
                    break;
                case "FactDelFunc":
                    ViewState["ActionType"] = "FactDelFunc";
                    PalFgrp.Visible = false;
                    PalAddFgrp.Visible = false;
                    PalDelFgrp.Visible = false;
                    PalDelFact.Visible = true;
                    LblDelFactMsg.Text = "注意:此動作會刪除此廠群組(<b>" + CheckQueryString("Fgrp_Nm") + "</b>)以下的廠別(<b>" + myMsg.Query("KeyOther") + "</b>)!";
                    break;
                case "UserDelFunc":
                    ViewState["ActionType"] = "UserDelFunc";
                    PalFgrp.Visible = false;
                    PalAddFgrp.Visible = false;
                    PalDelFgrp.Visible = false;
                    PalDelFact.Visible = false;
                    PalDelUser.Visible = true;
                    LblDelUserMsg.Text = "注意:此動作會刪除此廠群組(<b>" + CheckQueryString("Fgrp_Nm") + "</b>)以下的使用者(<b>" + myMsg.Query("KeyOther") + "</b>)之權限!";
                    break;
                default:
                    GenMasterTable();
                    break;
            }

        }
        else
        {
            string SrcUp_Id = string.Empty;
            if (Request.Params["SrcUp_Id"] != null)
            {
                SrcUp_Id = Request.Params["SrcUp_Id"].ToString();
                GenTree(ref TreeView1);
                //利用GetNodeIndex去設定m_CurrentNodeIndex的值,不需要再去設定一次Selected Lemor 20080312
                string aaa = GetNodeIndex(TreeView1.Nodes, SrcUp_Id);
                //TreeView1.FindNode(GetNodeIndex(TreeView1.Nodes, SrcUp_Id)).Selected = true;
                //TreeView1.SelectedValue = GetNodeIndex(TreeView1.Nodes, SrcUp_Id);
                //TreeView1.SelectedNodeIndex = GetNodeIndex(TreeView1.Nodes, SrcUp_Id);
                if (m_CurrentNodeIndex != null)
                {
                    string[] a;
                    a = m_CurrentNodeIndex.Split('/');
                    TreeView1.ExpandDepth = a.Length - 1;
                    //TreeView1.ExpandLevel = a.Length - 1;
                    TreeView1.FindNode(m_CurrentNodeIndex).Selected = true;
                    TreeView1.FindNode(m_CurrentNodeIndex).Expand();
                    //TreeView1.SelectedValue = m_CurrentNodeIndex;
                    //TreeView1.SelectedNodeIndex = m_CurrentNodeIndex;
                }
            }
        }
    }
    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (Session["UserID"] == null) return;

        // 將使用者程式碼置於此以初始化網頁
        m_apid = Request.QueryString["ApID"].ToString();
        PccMsg myMsg = new PccMsg();
        string MethodFunc = "";

        //判斷是否有新增的權限 20041118
        GetMenuAuth myAuth = new GetMenuAuth();
        if (myAuth.IsAddAuth())
        {
            lbtnAddNewUser.Visible = true;
            lbtnJoinUser.Visible = true;
        }

        if (!IsPostBack)
        {
            PccErrMsg myLabel = new PccErrMsg(Server.MapPath(Session["PageLayer"] + "XmlDoc"), Session["CodePage"].ToString(), "Label");
            SetLabel(ref myLabel);
            //設定廠別的資訊 20060717
            BindFactData(ref myLabel);

            //設定之前User鍵入的查詢資料。 2004/3/10
            if (Request.Params["QueryCondition"] != null && Request.Params["QueryCondition"].ToString() != "")
            {
                myMsg.LoadXml(Request.Params["QueryCondition"].ToString());
                txtUserName.Text = myMsg.Query("QueryCondition/txtUserName");
                ddlUserType.SelectedIndex = -1;
                ddlUserType.Items.FindByValue(myMsg.Query("QueryCondition/ddlUserType")).Selected = true;
            }

            GenMasterTable(ref myLabel);

            if (CheckRequestQueryString("Method") != "")
            {
                try
                {
                    myMsg.LoadXml(Request.QueryString["Method"]);
                }
                catch
                {
                    ClientScript.RegisterClientScriptBlock(this.GetType(),"New", "<script language=javascript>alert('Load XML Fail');</script>");
                    return;
                }
                MethodFunc = myMsg.Query("Method");
                switch (MethodFunc)
                {
                    case "MasterDelFunc":
                        MasterDelFunc(myMsg.Query("Key"), myMsg.Query("KeyOther"));
                        break;
                    case "MasterReturnFunc":
                        MasterReturnFunc(myMsg.Query("Key"), myMsg.Query("KeyOther"));
                        break;
                }

            }
        }
        else
        {
            if (txtReturn.Value != "")
            {
                try
                {
                    myMsg.LoadXml(txtReturn.Value);
                }
                catch
                {
                    ClientScript.RegisterClientScriptBlock(this.GetType(),"New", "<script language=javascript>alert('Load XML Fail');</script>");
                    return;
                }
                MethodFunc = myMsg.Query("Method");
                switch (MethodFunc)
                {
                    case "UpdateMenuByUser":
                        UpdateMenuByUser(txtReturn.Value);
                        break;
                }
            }
        }
    }
    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (Session["UserID"] == null) return;

        // 將使用者程式碼置於此以初始化網頁

        GetMenuAuth myAuth = new GetMenuAuth();
        if (myAuth.IsAddAuth())
        {
            lbtnAddGroup.Visible = true;
        }

        m_apid = Request.QueryString["ApID"].ToString();
        PccMsg myMsg = new PccMsg();
        string MethodFunc = "";

        if (!IsPostBack)
        {
            PccErrMsg myLabel = new PccErrMsg(Server.MapPath(Session["PageLayer"] + "XmlDoc"), Session["CodePage"].ToString(), "Label");
            SetLabel(ref myLabel);

            //設定之前User鍵入的查詢資料。 2004/3/10
            if (CheckQueryString("QueryCondition") != "")
            {
                myMsg.LoadXml(CheckQueryString("QueryCondition"));
                txtGroupName.Text = myMsg.Query("QueryCondition/txtGroupName");
            }

            GenMasterTable(ref myLabel);

            if (CheckQueryString("Method") != "")
            {
                try
                {
                    myMsg.LoadXml(CheckQueryString("Method"));
                }
                catch
                {
                    ClientScript.RegisterClientScriptBlock(this.GetType(),"New", "<script language=javascript>alert('Load XML Fail');</script>");
                    return;
                }
                MethodFunc = myMsg.Query("Method");
                switch (MethodFunc)
                {
                    case "MasterDelFunc":
                        MasterDelFunc(myMsg.Query("Key"), myMsg.Query("KeyOther"));
                        break;
                }

            }
        }
        else
        {
            if (txtReturn.Value != "")
            {
                try
                {
                    myMsg.LoadXml(txtReturn.Value);
                }
                catch
                {
                    ClientScript.RegisterClientScriptBlock(this.GetType(),"New", "<script language=javascript>alert('Load XML Fail');</script>");
                    return;
                }
                MethodFunc = myMsg.Query("Method");
                switch (MethodFunc)
                {
                    case "DeleteUserByGroup":
                        DeleteUserByGroup(txtReturn.Value);
                        break;
                    case "UpdateMenuByGroup":
                        UpdateMenuByGroup(txtReturn.Value);
                        break;
                }
            }
        }
    }
    private void GenMasterTableData(ref PccErrMsg myLabel)
    {
        PccErrMsg myErrMsg = new PccErrMsg(Server.MapPath(Session["PageLayer"] + "XmlDoc"), Session["CodePage"].ToString(), "Error");

        bs_FactGroupManage mybs = new bs_FactGroupManage(ConfigurationManager.AppSettings["ConnectionType"], ConfigurationManager.AppSettings["ConnectionServer"], ConfigurationManager.AppSettings["ConnectionDB"], ConfigurationManager.AppSettings["ConnectionUser"], ConfigurationManager.AppSettings["ConnectionPwd"], Session["UserIDAndName"].ToString(), ConfigurationManager.AppSettings["EventLogPath"]);

        PccMsg myMsg = new PccMsg();
        PccMsg myTempMsg = new PccMsg();
        myMsg.CreateFirstNode("Ap_Id", Request.QueryString["ApID"]);
        myMsg.CreateFirstNode("Upd_Id", Session["UserID"].ToString());
        myMsg.CreateFirstNode("Fact_No", txtfactno.Text);
        myMsg.CreateFirstNode("User_Desc", txtusernm.Text);
        myMsg.CreateFirstNode("OrderBy", "a.user_desc");

        myMsg.CreateFirstNode("StartRecord", PageControl1.StartRecord.ToString());
        myMsg.CreateFirstNode("PageSize", PageControl1.PageSize.ToString());

        GetMenuAuth myAuth = new GetMenuAuth();
        myAuth.AspxFile = FACTGROUPMANAGE;

        string strXML = myMsg.GetXmlStr;
        DataSet myUserDs = mybs.DoReturnDataSet("getAllUserInFgrp", strXML, "");

        DataTable myUserData = myUserDs.Tables["UserInFgrp"];
        DataTable myFgrpData, myFactData;
        Table myFgrpTable, myFactTable;

        PccRow myRow;

        if (myUserData.Rows.Count > 0)
        {
            int MasterCount = 0;
            string MasterStyle = "";

            //取出資料總筆數
            PageControl1.TotalSize = myUserDs.Tables["TCounts"].Rows[0]["Counts"].ToString();
            PageControl1.BuildPager();

            //再利用此Table再取得其每一列的資料,再Gen出主要的Table Row.
            foreach (DataRow myMasterRow in myUserData.Rows)
            {
                if (MasterCount % 2 == 0) MasterStyle = "eee000"; else MasterStyle = "fff000";
                myRow = new PccRow(MasterStyle, HorizontalAlign.Center, VerticalAlign.Middle, 0);
                //編號
                myRow.AddTextCell(PageControl1.ListCount, 5);
                //電子郵件帳號
                myRow.AddTextCell(myMasterRow["email"].ToString(), 40);
                //廠別
                myRow.AddTextCell(myMasterRow["fact_no"].ToString(), 10);
                //姓名
                if (myAuth.IsAddAuth())
                {
                    myTempMsg.CreateFirstNode("Href", PICKFGRP + "?ApID=" + m_ap_id + "&UserID=" + myMasterRow["user_id"] + "&UserDesc=" + myMasterRow["user_desc"].ToString().Trim() + "&QueryCondition=" + GetQueryCondition());
                    myTempMsg.CreateFirstNode("Text", myMasterRow["user_desc"].ToString().Trim());
                    myRow.AddLinkHrefCell(myTempMsg.GetXmlStr, 30);
                }
                else
                {
                    myRow.AddTextCell(myMasterRow["user_desc"].ToString(), 30);
                }
                //事業群
                myRow.AddTextCell(myMasterRow["fgrp_nm"].ToString(), 15);
                //檢視
                myTempMsg = new PccMsg();
                myTempMsg.CreateFirstNode("ToolTip", "檢視所屬的廠群組");
                myTempMsg.CreateFirstNode("LinkID", "HLinkView" + myMasterRow["user_id"].ToString());
                myTempMsg.CreateFirstNode("Image", Session["PageLayer"] + "images/detal.gif");
                myTempMsg.CreateFirstNode("ClickFun", "doSection(view_" + MasterCount.ToString() + ")");
                myRow.AddLinkCell(myTempMsg.GetXmlStr, 10);

                tblUser.Rows.Add(myRow.Row);

                //要取得明細資料的Table變數
                myTempMsg.ClearContext();
                myTempMsg.CreateFirstNode("Ap_Id", m_ap_id);
                myTempMsg.CreateFirstNode("User_Id", myMasterRow["user_id"].ToString());
                myTempMsg.CreateFirstNode("LoginUser_Id", Session["UserID"].ToString());
                myFgrpData = mybs.DoReturnDataSet("get_DS_FGRPByUserID", myTempMsg.GetXmlStr, string.Empty).Tables["FgrpInUser"];

                myFgrpTable = new Table();
                GenFgrpTableHeader(ref myFgrpTable);
                int DetailCount = 1;

                foreach (DataRow myDetailRow in myFgrpData.Rows)
                {
                    if (DetailCount % 2 == 0) MasterStyle = "eee000"; else MasterStyle = "ffd000";
                    myRow = new PccRow(MasterStyle, HorizontalAlign.Center, VerticalAlign.Middle, 0);
                    //編號
                    myRow.AddTextCell(DetailCount.ToString(), 10);
                    //廠群組名稱
                    myRow.AddTextCell(myDetailRow["Fgrp_Nm"].ToString(), 70);
                    //檢視
                    myTempMsg = new PccMsg();
                    myTempMsg.CreateFirstNode("ToolTip", "檢視所屬廠別");
                    myTempMsg.CreateFirstNode("LinkID", "HLinkView" + myDetailRow["Fgrp_Id"].ToString());
                    myTempMsg.CreateFirstNode("Image", Session["PageLayer"] + "images/detal.gif");
                    myTempMsg.CreateFirstNode("ClickFun", "doSection(view_D" + MasterCount.ToString() + "_" + DetailCount.ToString() + ")");
                    myRow.AddLinkCell(myTempMsg.GetXmlStr, 10);
                    //管理
                    myTempMsg = new PccMsg();
                    //先加入修改的Item
                    if (myAuth.IsDeleteAuth())
                    {
                        //再加入刪除的Item
                        myTempMsg.CreateNode("LinkButton");
                        myTempMsg.AddToNode("Image", Session["PageLayer"] + "images/del.gif");
                        myTempMsg.AddToNode("ToolTip", "刪除此使用者與廠群組的關係");
                        myTempMsg.AddToNode("href", MYURL + "?ApID=" + m_ap_id + "&User_Desc=" + myMasterRow["user_desc"].ToString() + "&User_Id=" + myMasterRow["user_id"].ToString());
                        myTempMsg.AddToNode("QueryCondition", GetQueryCondition());
                        myTempMsg.AddToNode("Method", GetMethod("DetailDelFunc", "Fgrp_Id", "Fgrp_Nm", myDetailRow));
                        myTempMsg.UpdateNode();
                    }

                    myRow.AddMultiLinkCell(myTempMsg.GetXmlStr, 10);

                    myFgrpTable.Controls.Add(myRow.Row);

                    //要取得廠別明細資料的Table變數
                    myTempMsg.ClearContext();
                    myTempMsg.CreateFirstNode("Fgrp_Id", myDetailRow["Fgrp_Id"].ToString());
                    myTempMsg.CreateFirstNode("LoginUser_Id", Session["UserID"].ToString());
                    myFactData = mybs.DoReturnDataSet("get_DS_FACTGRPByFgrpID", myTempMsg.GetXmlStr, string.Empty).Tables["DS_FACTGRP"];

                    myFactTable = new Table();
                    GenFactTableHeader(ref myFactTable);
                    int FactDetailCount = 1;
                    foreach (DataRow myFactDetailRow in myFactData.Rows)
                    {
                        if (DetailCount % 2 == 0) MasterStyle = "eee000"; else MasterStyle = "ffd000";
                        myRow = new PccRow(MasterStyle, HorizontalAlign.Center, VerticalAlign.Middle, 0);

                        //編號
                        myRow.AddTextCell(FactDetailCount.ToString(), 10);
                        //廠別
                        myRow.AddTextCell(myFactDetailRow["Fact_No"].ToString(), 10);
                        //廠別名稱
                        myRow.AddTextCell(myFactDetailRow["Fact_Nm"].ToString(), 40);
                        //事業群
                        myRow.AddTextCell(myFactDetailRow["Fgrp_Nm"].ToString(), 20);
                        //公司編號
                        myRow.AddTextCell(myFactDetailRow["Comp_No"].ToString(), 20);

                        myFactTable.Controls.Add(myRow.Row);

                        FactDetailCount += 1;
                    }

                    myRow.Reset();
                    myRow.SetRowCss("off");
                    myRow.SetRowID("view_D" + MasterCount.ToString() + "_" + DetailCount);
                    myRow.SetDefaultCellData("DGridTD", HorizontalAlign.Center, 0, 10);
                    myRow.AddControl(myFactTable, 100);

                    myFgrpTable.Controls.Add(myRow.Row);

                    DetailCount += 1;

                }

                myRow.Reset();
                myRow.SetRowCss("off");
                myRow.SetRowID("view_" + MasterCount);
                myRow.SetDefaultCellData("DGridTD", HorizontalAlign.Center, 0, 10);
                myRow.AddControl(myFgrpTable, 100);

                tblUser.Controls.Add(myRow.Row);

                MasterCount += 1;
            }
        }
        else
        {
            PageControl1.TotalSize = "0";
            PageControl1.BuildPager();
            myRow = new PccRow("DGridTD", HorizontalAlign.Center, VerticalAlign.Middle, 6);
            myRow.AddTextCell("<b><font color='darkred'>" + myErrMsg.GetErrMsg("AdtWeb/msg0072") + "</font></b>", 100);
            tblUser.Controls.Add(myRow.Row);
        }
    }