示例#1
0
        public Attrs Clone()
        {
            Attrs attrs = new Attrs();

            foreach (Attr attr in this)
            {
                attrs.Add(attr);
            }
            return(attrs);
        }
示例#2
0
        void btn_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

            try
            {
                BP.Web.Controls.DDL DDL_ImpWay            = (BP.Web.Controls.DDL) this.Pub1.FindControl("DDL_ImpWay");
                System.Web.UI.WebControls.FileUpload fuit = (System.Web.UI.WebControls.FileUpload) this.Pub1.FindControl("fup");
                if (DDL_ImpWay.SelectedIndex == 0)
                {
                    this.Alert("请选择导入方式.");
                    return;
                }

                string tempPath = this.Request.PhysicalApplicationPath + "\\Temp\\";
                if (System.IO.Directory.Exists(tempPath) == false)
                {
                    System.IO.Directory.CreateDirectory(tempPath);
                }

                MapDtl dtl = new MapDtl(this.FK_MapDtl);

                //求出扩展名.
                string fileName = fuit.FileName.ToLower();
                if (fileName.Contains(".xls") == false)
                {
                    this.Alert("上传的文件必须是excel文件.");
                    return;
                }
                string ext = ".xls";
                if (fileName.Contains(".xlsx"))
                {
                    ext = ".xlsx";
                }

                //保存临时文件.
                string file = tempPath + WebUser.No + ext;
                fuit.SaveAs(file);

                GEDtls dtls = new GEDtls(this.FK_MapDtl);
                System.Data.DataTable dt = BP.DA.DBLoad.GetTableByExt(file);

                file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ext;
                if (System.IO.File.Exists(file) == false)
                {
                    if (ext == ".xlsx")
                    {
                        file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls";
                    }
                    else
                    {
                        file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls";
                    }
                }

                System.Data.DataTable dtTemplete = BP.DA.DBLoad.GetTableByExt(file);

                #region 检查两个文件是否一致。
                foreach (DataColumn dc in dtTemplete.Columns)
                {
                    bool isHave = false;
                    foreach (DataColumn mydc in dt.Columns)
                    {
                        if (dc.ColumnName == mydc.ColumnName)
                        {
                            isHave = true;
                            break;
                        }
                    }
                    if (isHave == false)
                    {
                        throw new Exception("@您导入的excel文件不符合系统要求的格式,请下载模版文件重新填入。");
                    }
                }
                #endregion 检查两个文件是否一致。

                #region 生成要导入的属性.

                BP.En.Attrs attrs    = dtls.GetNewEntity.EnMap.Attrs;
                BP.En.Attrs attrsExp = new BP.En.Attrs();
                foreach (DataColumn dc in dtTemplete.Columns)
                {
                    foreach (Attr attr in attrs)
                    {
                        if (attr.UIVisible == false)
                        {
                            continue;
                        }

                        if (attr.IsRefAttr)
                        {
                            continue;
                        }

                        if (attr.Desc == dc.ColumnName.Trim())
                        {
                            attrsExp.Add(attr);
                            break;
                        }
                    }
                }
                #endregion 生成要导入的属性.

                #region 执行导入数据.
                if (DDL_ImpWay.SelectedIndex == 1)
                {
                    BP.DA.DBAccess.RunSQL("DELETE FROM " + dtl.PTable + " WHERE RefPK='" + this.WorkID + "'");
                }

                int    i   = 0;
                Int64  oid = BP.DA.DBAccess.GenerOID("Dtl", dt.Rows.Count);
                string rdt = BP.DA.DataType.CurrentData;

                string errMsg = "";
                foreach (DataRow dr in dt.Rows)
                {
                    GEDtl dtlEn = dtls.GetNewEntity as GEDtl;
                    dtlEn.ResetDefaultVal();

                    foreach (BP.En.Attr attr in attrsExp)
                    {
                        if (attr.UIVisible == false || dr[attr.Desc] == DBNull.Value)
                        {
                            continue;
                        }
                        string val = dr[attr.Desc].ToString();
                        if (val == null)
                        {
                            continue;
                        }
                        val = val.Trim();
                        switch (attr.MyFieldType)
                        {
                        case FieldType.Enum:
                        case FieldType.PKEnum:
                            SysEnums ses     = new SysEnums(attr.UIBindKey);
                            bool     isHavel = false;
                            foreach (SysEnum se in ses)
                            {
                                if (val == se.Lab)
                                {
                                    val     = se.IntKey.ToString();
                                    isHavel = true;
                                    break;
                                }
                            }
                            if (isHavel == false)
                            {
                                errMsg += "@数据格式不规范,第(" + i + ")行,列(" + attr.Desc + "),数据(" + val + ")不符合格式,改值没有在枚举列表里.";
                                val     = attr.DefaultVal.ToString();
                            }
                            break;

                        case FieldType.FK:
                        case FieldType.PKFK:
                            Entities ens = null;
                            if (attr.UIBindKey.Contains("."))
                            {
                                ens = BP.En.ClassFactory.GetEns(attr.UIBindKey);
                            }
                            else
                            {
                                ens = new GENoNames(attr.UIBindKey, "desc");
                            }

                            ens.RetrieveAll();
                            bool isHavelIt = false;
                            foreach (Entity en in ens)
                            {
                                if (val == en.GetValStrByKey("Name"))
                                {
                                    val       = en.GetValStrByKey("No");
                                    isHavelIt = true;
                                    break;
                                }
                            }
                            if (isHavelIt == false)
                            {
                                errMsg += "@数据格式不规范,第(" + i + ")行,列(" + attr.Desc + "),数据(" + val + ")不符合格式,改值没有在外键数据列表里.";
                            }
                            break;

                        default:
                            break;
                        }

                        if (attr.MyDataType == BP.DA.DataType.AppBoolean)
                        {
                            if (val.Trim() == "是" || val.Trim().ToLower() == "yes")
                            {
                                val = "1";
                            }

                            if (val.Trim() == "否" || val.Trim().ToLower() == "no")
                            {
                                val = "0";
                            }
                        }

                        dtlEn.SetValByKey(attr.Key, val);
                    }
                    dtlEn.RefPKInt = (int)this.WorkID;
                    dtlEn.SetValByKey("RDT", rdt);
                    dtlEn.SetValByKey("Rec", WebUser.No);
                    i++;

                    dtlEn.InsertAsOID(oid);
                    oid++;
                }
                #endregion 执行导入数据.

                if (string.IsNullOrEmpty(errMsg) == true)
                {
                    this.Alert("共有(" + i + ")条数据导入成功。");
                }
                else
                {
                    this.Alert("共有(" + i + ")条数据导入成功,但是出现如下错误:" + errMsg);
                }
            }
            catch (Exception ex)
            {
                string msg = ex.Message.Replace("'", "‘");
                this.Alert(msg);
            }
        }
示例#3
0
        void btn_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

            try
            {
                BP.Web.Controls.DDL DDL_ImpWay            = (BP.Web.Controls.DDL) this.Pub1.FindControl("DDL_ImpWay");
                System.Web.UI.WebControls.FileUpload fuit = (System.Web.UI.WebControls.FileUpload) this.Pub1.FindControl("fup");
                if (DDL_ImpWay.SelectedIndex == 0)
                {
                    this.Alert("请选择导入方式.");
                    return;
                }

                MapDtl dtl  = new MapDtl(this.FK_MapDtl);
                string file = this.Request.PhysicalApplicationPath + "\\Temp\\" + WebUser.No + ".xls";
                fuit.SaveAs(file);

                GEDtls dtls = new GEDtls(this.FK_MapDtl);
                System.Data.DataTable dt = BP.DBLoad.GetTableByExt(file);

                file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls";
                System.Data.DataTable dtTemplete = BP.DBLoad.GetTableByExt(file);

                #region 检查两个文件是否一致。
                foreach (DataColumn dc in dtTemplete.Columns)
                {
                    bool isHave = false;
                    foreach (DataColumn mydc in dt.Columns)
                    {
                        if (dc.ColumnName == mydc.ColumnName)
                        {
                            isHave = true;
                            break;
                        }
                    }
                    if (isHave == false)
                    {
                        throw new Exception("@您导入的excel文件不符合系统要求的格式,请下载模版文件重新填入。");
                    }
                }
                #endregion 检查两个文件是否一致。


                #region 生成要导入的属性.

                BP.En.Attrs attrs    = dtls.GetNewEntity.EnMap.Attrs;
                BP.En.Attrs attrsExp = new BP.En.Attrs();
                foreach (DataColumn dc in dtTemplete.Columns)
                {
                    foreach (Attr attr in attrs)
                    {
                        if (attr.UIVisible == false)
                        {
                            continue;
                        }

                        if (attr.IsRefAttr)
                        {
                            continue;
                        }

                        if (attr.Desc == dc.ColumnName.Trim())
                        {
                            attrsExp.Add(attr);
                            break;
                        }
                    }
                }
                #endregion 生成要导入的属性.


                #region 执行导入数据.
                if (DDL_ImpWay.SelectedIndex == 1)
                {
                    BP.DA.DBAccess.RunSQL("DELETE " + dtl.PTable + " WHERE RefPK='" + this.WorkID + "'");
                }

                int    i   = 0;
                Int64  oid = BP.DA.DBAccess.GenerOID(this.FK_MapDtl, dt.Rows.Count);
                string rdt = BP.DA.DataType.CurrentData;
                foreach (DataRow dr in dt.Rows)
                {
                    GEDtl dtlEn = dtls.GetNewEntity as GEDtl;
                    dtlEn.ResetDefaultVal();

                    foreach (BP.En.Attr attr in attrsExp)
                    {
                        if (attr.UIVisible == false || dr[attr.Desc] == DBNull.Value)
                        {
                            continue;
                        }

                        string val = dr[attr.Desc].ToString();
                        if (val == null)
                        {
                            continue;
                        }
                        val = val.Trim();
                        switch (attr.MyFieldType)
                        {
                        case FieldType.Enum:
                        case FieldType.PKEnum:
                            SysEnums ses = new SysEnums(attr.UIBindKey);
                            foreach (SysEnum se in ses)
                            {
                                if (val == se.Lab)
                                {
                                    val = se.IntKey.ToString();
                                    break;
                                }
                            }
                            break;

                        case FieldType.FK:
                        case FieldType.PKFK:
                            break;

                        default:
                            break;
                        }

                        dtlEn.SetValByKey(attr.Key, val);
                    }
                    dtlEn.RefPKInt = (int)this.WorkID;
                    dtlEn.SetValByKey("RDT", rdt);
                    dtlEn.SetValByKey("Rec", WebUser.No);
                    i++;
                    dtlEn.InsertAsOID(oid);
                    oid++;
                }
                #endregion 执行导入数据.

                this.Alert("共有(" + i + ")条数据导入成功。");
            }
            catch (Exception ex)
            {
                string msg = ex.Message.Replace("'", "‘");
                this.Alert(msg);
            }
        }