/// <summary> /// 导出工程MI资料 /// </summary> /// <param name="id">序号</param> /// <param name="saveFilePath">文件路径</param> /// <returns>执行结果消息</returns> public string ToExcel(long id, string saveFilePath) { //记录保存路径和文件名 this.saveFilePath = saveFilePath; string msg = string.Empty; using (var da = new t_eng_lot_cardTableAdapter()) { var tab = da.GetDataById(id); if (tab.Rows.Count > 0) { msg = ToExcel((DataSetEng.t_eng_lot_cardRow)tab.Rows[0]); } else { msg = "导出失败,无此ID的工程MI资料!"; } } return msg; }
/// <summary> /// 检查用的输入是否合法.合法返回true,否则返回false /// </summary> /// <param name="values">新增或修改事件的参数集合对象</param> /// <returns></returns> private bool CheckUserInput(IOrderedDictionary values) { //取生产编号 var txtPn = (TextBox)fvEngLotCardAdd.FindControl("txtProductNum"); //转为大写 var pn = txtPn.Text.ToUpper(); if (!ProductNum.IsProductNum(pn)) { throw new Exception(pn + ",不是生产编号!"); } using (var da = new t_eng_lot_cardTableAdapter()) { var tab = da.GetDataByPn(pn); if (tab.Rows.Count > 0) { throw new Exception(string.Format("新增失败,\n存在生产编号{0}的工序流程卡,请检查后重试!", pn)); } } //记录生产编号 values["product_num"] = pn; //继续检查 return CheckUserInput(values, pn); }
protected void fvEngLotCardAdd_ItemUpdating(object sender, FormViewUpdateEventArgs e) { //取消请求执行自定义的方法 e.Cancel = true; if (!HasRight()) { throw new Exception("您没有修改记录权限!"); } //当前生产编号 string pn = string.Empty; //当前ID long id = Convert.ToInt32(e.Keys["id"]); //获取生产编号 using (var da = new t_eng_lot_cardTableAdapter()) { var tab = da.GetDataById(id); if (tab.Rows.Count == 0) { throw new Exception("修改失败,此条记录已经被其他用户删除!"); } var row = (DataSetEng.t_eng_lot_cardRow)tab.Rows[0]; pn = row.product_num; } var col = e.NewValues; //检查用户输入并写入填写内容,输入不合法不执行修改操作 if (!CheckUserInput(e.NewValues, pn) || !this.IsValid) { return; } //记录生产编号 e.NewValues["product_num"] = pn; //设置录入员姓名和时间 string user = Session["user_name"].ToString(); //当前角色id Int16 roleId = Convert.ToInt16(Session["role_id"]); //检测是否为审核权限 if (roleId < 4) { //审核人 e.NewValues["audit"] = user; //审核时间 e.NewValues["audit_time"] = DateTime.Now; } else { e.NewValues["add_person"] = user; } e.NewValues["last_change_time"] = DateTime.Now; //直接保存 e.Cancel = false; }
//导出数据到Excel protected void lBtnToExcel_Click(object sender, EventArgs e) { //获取数据并填充到数据表 using (var da = new t_eng_lot_cardTableAdapter()) { //查询条件 string strWhere = GetWhereContent(); //获取前1万行数据 var tab = da.GetPagedData(0, 10000, strWhere, "order by [id] desc"); //tab.Columns.Add("film_is_new", typeof(string), "case when [film]='true' then '新' when [film]='false' then '旧' else '' end"); var col = new DataColumn("film_is_new", typeof(string)); tab.Columns.Add(col); col.SetOrdinal(4); int len = tab.Rows.Count; for (int i = 0; i < len; i++) { var row = tab.Rows[i]; var film = row["film"]; if (film != DBNull.Value) { bool isNew = Convert.ToBoolean(film); row["film_is_new"] = isNew ? "新" : "旧"; } } tab.Columns.Remove("film"); //设置列标题 string[] titleCol = (@"序号,客户,客户编号,生产编号,菲林,菲林日期, PNL含PCS数,开料PNL数,大料总单只数,样板开料SET数,样板开料PCS数, A板PNL长,A板PNL宽,A板大料PNL数,A板大料SET数,A板大料PCS数, B板PNL长,B板PNL宽,B板大料PNL数,B板大料SET数, B板大料PCS数,材料,模冲号,备注, 次序1,指示1, 次序2,指示2, 次序3,指示3, 次序4,指示4, 次序5,指示5, 次序6,指示6, 次序7,指示7, 次序8,指示8, 次序9,指示9, 次序10,指示10, 次序11,指示11, 次序12,指示12, 次序13,指示13, 次序14,指示14, 次序15,指示15, 次序16,指示16, 次序17,指示17, 次序18,指示18, 次序19,指示19, 次序20,指示20, 次序21,指示21, 次序22,指示22, 次序23,指示23, 次序24,指示24, 次序25,指示25, 次序26,指示26, 次序27,指示27, 次序28,指示28, 次序29,指示29, 次序30,指示30, 次序31,指示31, 次序32,指示32, 次序33,指示33, 次序34,指示34, 次序35,指示35, 次序36,指示36, 次序37,指示37, 次序38,指示38, 次序39,指示39, 次序40,指示40, 次序41,指示41, 次序42,指示42, 次序43,指示43, 次序44,指示44, 次序45,指示45, 次序46,指示46, 次序47,指示47, 次序48,指示48, 次序49,指示49, 次序50,指示50, V-CUT备注, 菲林尺寸,成品尺寸,单元面积,利用率, 物料编码,开料图,编制,编制时间, 审核,审核时间,修改时间").Split(','); //设置表名称 string titleTab = "工程MI资料清单"; //临时文件名称 string fileName = titleTab + DateTime.Now.ToString("yyMMddHHmmss") + ".xls"; //执行导出数据到excel bool isSuccess = ydPublicMethod.DataTable2Excel(tab, titleCol, ref fileName, titleTab); //如果成功则跳转到指定页面 if (isSuccess) { Response.Redirect(fileName); //停止加载后续内容 Response.End(); } } }