标签:
FORM标记的属性解释如下:
name:表单的名称
method:定义表单结果从浏览器传送到服务器的方法,一般有两种方法get和post
action:用来定义表单处理程序(一个ASP,CGI等程序)的位置( 相对地址或绝对地址)
enctype:设置表单资料的编码方式
target:设置返回信息的显示方式
通过为表单命名可以控制表单与后台程序之间的关系。
METHOD属性中,GET方法是将表单内容附在URL地址后面,所以对提交信息的长度进行了限制,不可以超过8192个字符。如果信息太长,将被截去,从而导致意想不到的处理结果。同时GET方法不具有保密性,不适合处理如信用卡卡号等要求保密的内容,而且不能传送非ASCII码的字符。
POST方法是将用户在表单中填写的数据包含在表单的主体中,一起传送到服务器上的处理程序中,该方法没有字符的限制,它包含了ISO10646的字符集,是一种邮寄的方式,在浏览器的地址栏不显示提交的信息,这种方式传送的数据是没有限制的。
当不指明是哪种方式时,默认为GET方式。
设置表单信息提交的编码方式,有以下几种:
TEXT/plain:以纯文本形式传送信息
Application/x-www-Form-urlencoded:默认的编码形式
Multipart/Form-data:使用MINE编码
设置表单信息返回的窗口。
TARGET的值有以下几种:
_blank:将返回信息显示在新开的浏览器窗口中
_parent:将返回信息显示在父级浏览器窗口中
_self:将返回信息显示在当前浏览器窗口中
_top:将返回信息显示在顶级浏览器窗口中
<form id="Form1" method="post" runat="server" action="common/OM/OrderUploadHandler.ashx" enctype="multipart/form-data" class="pageForm required-validate" onsubmit="return iframeCallback(this,CallBackAjaxDone)"> <ul> <li> <table class="searchContent"> <tr> <td> 文件路径:<input type="file" id="OrderFile" name="OrderFile"/> <input type="hidden" name="Action" value="upload" id="Action" field="Action" /> </td> </tr> </table> </li> <li class="line"></li> <li> <button type="submit" id="btn">上传</button> </li>
今天看别人写的代码的时候看到
submit="return iframeCallback(this,CallBackAjaxDone)不太理解,百度了一下。
首先是在form标签中有一个onsubmit的属性,他有两个值分别是true和false,如果true,这个网页就跳转到action属性的search_result.jsp页面,否则不跳转。所以用 return 返回一个true或false的值,函数是给用户输入的信息做一个验证的,成功就到action指定的页面处理。不成功就不处理
<script type="text/javascript"> function CallBackAjaxDone(data) { try { data = data.replace("<PRE>", ""); data = data.replace("</PRE>", ""); var json = eval("(" + data + ")"); //转换为json对象 if (json.result == "200") { alertMsg.correct("订单上传成功!"); var fileobj = document.getElementById("OrderFile"); fileobj.outerHTML = fileobj.outerHTML; // document.pagerForm.action = "搜索查询地址"; // document.pagerForm.submit(); $("#OrderUploadQuery").trigger("click"); } else { alertMsg.error(json.result); } } catch (e) { alertMsg.correct("订单上传失败:"+e.toString()); } } var strAction; function onSubmit(strAction) { try { document.getElementById(‘ListAction‘).value = strAction return false; } catch (err) { alert(err.description); } } </script>
cation页面的处理:
<%@ WebHandler Language="C#" Class="OrderUploadHandler" %> using System; using System.Web; using System.Data; using System.IO; using System.Collections; using System.Collections.Generic; using System.Web.SessionState; using ERDP.Web.Common; using SCM.POS.SA.Service; using SCM.POS.OM.Domain; using SCM.POS.OM.Service; public class OrderUploadHandler : ERDP.Web.UI.BasePage, IHttpHandler, IRequiresSessionState { ERDP.Common.LoginSession _login; string strFID = ""; string strResult = ""; string strpostatus = ""; HttpPostedFile PostOrderFile; Hashtable htPara = new Hashtable(); StockOrder _StockOrder = StockOrder.GetInstance(); OrderUpload _OrderUpload = OrderUpload.GetInstance(); public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; _login = GetLoginSession(); string strAction = context.Request["Action"] == null ? "add" : context.Request["Action"].ToString(); strFID = context.Request["FIDS"] == null ? "" : Context.Request["FIDS"].ToString(); //删除信息时会传入 strpostatus = context.Request["STATUS"] == null ? "" : Context.Request["STATUS"].ToString(); strResult = "{Action:‘" + strAction.ToLower() + "‘"; if (Context.Request["json_Contect"] != null) htPara = new ERDP.Web.Common.Json(Context.Request["json_Contect"].ToString());// if (HttpContext.Current.Request.Files["OrderFile"] != null) { PostOrderFile = HttpContext.Current.Request.Files["OrderFile"]; } try { switch (strAction.ToLower()) { case "upload": upload(PostOrderFile); strResult += ",result:‘200‘"; break; case "confirm": confirm(); break; case "delete": delete(); break; } } catch (Exception ex) { strResult += ",result:‘" + ex.Message.ToString().Replace(":", " ").Replace("\"", " ").Replace("‘", " ").Replace(",", "").Replace("\n", "") + "‘"; // strResult += ",result:‘处理出现异常。请联系系统管理员!‘"; } context.Response.Write(strResult + "}"); } void confirm() { ERDP.Assemble.Domain.E_MasterSlave eMasterSlave = new ERDP.Assemble.Domain.E_MasterSlave(); E_OrderUpload e_OrderUpload=new E_OrderUpload(); string[] strsavel = strFID.Substring(0, strFID.Length - 1).Split(‘|‘); for (int i = 0; i < strsavel.Length; i++) { eMasterSlave.SlaveList.Add(strsavel[i]); Hashtable ht_para=new Hashtable(); ht_para.Add("mFID",strsavel[i].ToString()); e_OrderUpload=_OrderUpload.GetOrderUpload(ht_para); ht_para.Add("mFIssueNumber", e_OrderUpload.mFNumber); if (_StockOrder.GetOrderByIssuNumber(ht_para) > 0) { strResult += ",result:‘【订单号"+e_OrderUpload.mFNumber+"已确认】。‘"; return; } } eMasterSlave.Masterid = _login.mUserID; eMasterSlave.Backup_L1 = _login.mOUID; eMasterSlave.Backup_L2 = System.Guid.NewGuid().ToString().Replace("-",""); if (eMasterSlave.SlaveList.Count == 0) { strResult += ",result:‘没有选择确认订单。‘"; return; } OrderUpload _orderUpload = OrderUpload.GetInstance(); //插入日志 Hashtable ht_log = new Hashtable(); ht_log.Add("mFID", SysHelper.NewGUID); ht_log.Add("mFName", _login.mFLoginName); ht_log.Add("mFType", "操作"); ht_log.Add("mFDescription", "订单确认"); ht_log.Add("mFIP", _login.LoginIP); ht_log.Add("mCreateBy", _login.mUserID); ht_log.Add("mLastUpdateBy", _login.mUserID); ht_log.Add("mOrgUnitID", _login.mOUID); _orderUpload.BatchConfirmOrder(eMasterSlave, ht_log); strResult += ",result:‘200‘"; } void delete() { ERDP.Assemble.Domain.E_MasterSlave eMasterSlave = new ERDP.Assemble.Domain.E_MasterSlave(); string[] strstatu = strpostatus.Substring(0, strpostatus.Length - 1).Split(‘|‘); string[] strsavel = strFID.Substring(0, strFID.Length - 1).Split(‘|‘); if (strsavel.Length == 0) { strResult += ",result:‘没有选择删除记录。‘"; return; } OrderUpload _orderUpload = OrderUpload.GetInstance(); //插入日志 Hashtable ht_log = new Hashtable(); ht_log.Add("mFID", SysHelper.NewGUID); ht_log.Add("mFName", _login.mFLoginName); ht_log.Add("mFType", "操作"); ht_log.Add("mFDescription", "订单删除"); ht_log.Add("mFIP", _login.LoginIP); ht_log.Add("mCreateBy", _login.mUserID); ht_log.Add("mLastUpdateBy", _login.mUserID); ht_log.Add("mOrgUnitID", _login.mOUID); _orderUpload.BatchDeleteOrderUpload(strsavel, strstatu, _login.mUserID, ht_log); strResult += ",result:‘200‘"; } void upload(HttpPostedFile htpf) { //1、上传附件 string fileaadress = htpf.FileName; int startPoint = fileaadress.LastIndexOf("\\") + 1; int endPoint = fileaadress.IndexOf("."); string filename = fileaadress.Substring(startPoint, endPoint - startPoint); string strfileExtension = fileaadress.Substring(fileaadress.IndexOf(".") + 1); //备份文件 string filenamefull = fileaadress.Substring(fileaadress.LastIndexOf("\\") + 1); string NewFile = "order" + DateTime.Now.ToString("yyMMddHHmmssfff") + "." + strfileExtension; string serviceFilePath = System.Web.HttpContext.Current.Server.MapPath("~\\"); if (!Directory.Exists(serviceFilePath + @"temp\")) { Directory.CreateDirectory(serviceFilePath + @"temp\"); } htpf.SaveAs(serviceFilePath + @"temp\" + NewFile); //上传至服务器 DataTable dt = ReadFromExcelBySheet(serviceFilePath + @"temp\" + NewFile, "sheet"); if (dt.Rows.Count == 0) { throw new Exception("导入的数据为空!"); } //1.2在同一个导入的excel中同一个零件编码的零件,SNP,零件名称,必须要一致,否则导入数据会出错。 string partNo1 = dt.Rows[0][11].ToString(); // string strFactoryOrderNo = dt.Rows[0][0].ToString() + dt.Rows[0][1].ToString(); List<string> listpartNO = new List<string>(); listpartNO.Add(partNo1.Trim()); //循环表中所有的零件编号 零件编号11列 零件名称12列,SNP为14 //工厂代码0 订单号码1 到货年2 到货月3 到货日4 到货小时5 到货分6 OrderUpload _orderupload = OrderUpload.GetInstance(); int i = 0; //余数 int remainercount = 0; foreach (DataRow dr in dt.Rows) { //可以在这里判断必填写字段和规则;???????????????? if (dr[0].ToString() == "") { throw new Exception("导入失败:发行号为[" + dr[1].ToString() + "]的订单中工厂必须填写!"); } if (dr[1].ToString() == "") { throw new Exception("导入失败:有发行号为空的订单,请检查!"); } if (dr[1].ToString().Length != 7) { throw new Exception("导入失败:发行号长度必须为7位!"); } //判断同一个收货工厂的发行号不能重复 Hashtable htAA = new Hashtable(); htAA.Add("mFNeedGoodsDeptNumber", dr[0].ToString().Trim()); htAA.Add("mFNumber", dr[1].ToString().Trim()); if (_orderupload.QueryOrderCount(htAA) > 0) { throw new Exception("导入失败:发行号为[" + dr[1].ToString() + "]订单已经存在!"); } // //年 try { if (dr[2].ToString().Length != 4) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中年份必须为4位的整数!"); } if (int.Parse(dr[2].ToString()) <= 0 ) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中年费必须大于等于零!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中年份必须为数字!"); } //月 try { if (dr[3].ToString()=="") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中月份不能为空!"); } if (int.Parse(dr[3].ToString()) <= 0 || int.Parse(dr[3].ToString()) >12) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中月份必须为1到12的整数!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中月份必须为数字!"); } //日 try { if (dr[4].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中日不能为空!"); } if (int.Parse(dr[4].ToString()) <= 0 || int.Parse(dr[4].ToString()) > 31) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中日必须为1到31的整数!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中日必须为数字!"); } //小时 try { if (dr[5].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中小时不能为空!"); } if (int.Parse(dr[5].ToString()) <= 0 || int.Parse(dr[4].ToString()) > 24) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中小时必须为1到24的整数!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中小时必须为数字!"); } //分钟 try { if (dr[6].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中分钟不能为空!"); } if (int.Parse(dr[6].ToString()) < 0 || int.Parse(dr[6].ToString()) > 60) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中分钟必须为0到60的整数!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中分钟必须为数字!"); } //供应商代码7 供应商仓库代码8 生担9 到货地代码10 if (dr[7].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中供应商必须填写!"); } if (dr[8].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中供应商仓库代码必须填写!"); } if (dr[9].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中生但必须填写!"); } if (dr[10].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中到货地代码必须填写!"); } // //零件代码11 零件英文名称12 订货数13 SNP14 当工顺15 箱数16 内外区分(必填)17 if (dr[11].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中零件代码必须填写!"); } if (dr[13].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中订货数必须填写!"); } try { if (dr[13].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中订货数必须填写!"); } if (int.Parse(dr[13].ToString())<=0) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中订货数必须大于等于零!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中订货数必须为数字!"); } //SNP14 当工顺15 箱数16 内外区分(必填)17 try { if (dr[14].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中SNP必须填写!"); } if (int.Parse(dr[14].ToString()) <= 0) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中SNP必须大于等于零!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中SNP必须为数字!"); } try { if (dr[16].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中箱数必须填写!"); } if (int.Parse(dr[16].ToString()) <= 0) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中箱数必须大于等于零!"); } } catch { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中箱数必须为数字!"); } if (dr[17].ToString() == "") { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的订单中内外区分必须填写!"); } if (i!=0) { //同一个发行号,在订单中只能出现一次,判断发行在同一个工厂是否重复出现; if (strFactoryOrderNo == dr[0].ToString() + dr[1].ToString()) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]在工厂[" + dr[0].ToString() + "]中重复出现!"); } } if (dr[11].ToString().Trim() != partNo1.Trim()) { if (!listpartNO.Contains(dr[11].ToString())) { listpartNO.Add(dr[11].ToString().Trim()); } } /***判断数据是否正确-START***/ //订货数13 SNP14 箱数16 //箱数*SNP-订货数<=SNP int snpcount = int.Parse(dr[14].ToString()); int boxcount = int.Parse(dr[16].ToString()); int ordercount = int.Parse(dr[13].ToString()); if (snpcount * boxcount - ordercount < snpcount) { if (snpcount * boxcount - ordercount > 0) { remainercount = ordercount % snpcount; } if (snpcount * boxcount - ordercount < 0) { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的数据有问题,请检查!"); } } else { throw new Exception("导入失败:发行号[" + dr[1].ToString() + "]的数据有问题,请检查!"); } /***判断数据是否正确-END***/ i = i + 1; } //判断同一个零件的名称和SNP是否一致; foreach (string skey in listpartNO) { DataRow dtb = dt.Select("零件代码=‘" + skey + "‘")[0]; foreach (DataRow item in dt.Select("零件代码=‘" + skey + "‘")) { if (dtb[12].ToString() != item[12].ToString() || dtb[14].ToString() != item[14].ToString()) { throw new Exception("导入失败:相同零件编号:[" + skey + "]的名称和SNP不一致!"); } } } //================================ ERDP.SCM.Service.Common _Common = new ERDP.SCM.Service.Common(); //给参数赋值 List<E_OrderUpload> ListOrderUpload = new List<E_OrderUpload>(); foreach (DataRow dr in dt.Rows) { E_OrderUpload entity = new E_OrderUpload(); entity.mFID = _Common.GUID(); entity.mFNumber = dr[1].ToString(); entity.mFNeedGoodsDeptNumber = dr[0].ToString(); entity.mFToInstructionTime = DateTime.Parse(dr[2].ToString()+"-"+dr[3].ToString()+"-"+dr[4].ToString()+" "+dr[5].ToString()+":"+dr[6].ToString() ); entity.mFSupplyNumber = dr[7].ToString(); entity.mFOutGoodsDeptNumber = dr[8].ToString(); entity.mFProduce = dr[9].ToString(); entity.mFToGoodsPlaceNumber = dr[10].ToString(); entity.mFPartNumber = dr[11].ToString(); entity. mFPartENName= dr[12].ToString(); entity.mFOrderCount = int.Parse(dr[13].ToString()); entity. mFSNP=int.Parse( dr[14].ToString()); entity.mFWorkPlace = dr[15].ToString(); entity.mFContainerCount=int.Parse( dr[16].ToString()); entity.mFInAndOut = dr[17].ToString(); entity.mFRemainder = remainercount; entity.mCreateby = _login.mUserID; entity.mLastUpdateby = _login.mUserID; //entity.mOrgUnitID = _login.mOUID; entity.mFReceiverTime = _Common.GetSysTime(); ListOrderUpload.Add(entity); } //插入日志 Hashtable ht_log = new Hashtable(); ht_log.Add("mFID", SysHelper.NewGUID); ht_log.Add("mFName", _login.mFLoginName); ht_log.Add("mFType", "操作"); ht_log.Add("mFDescription", "订单上传"); ht_log.Add("mFIP", _login.LoginIP); ht_log.Add("mCreateBy", _login.mUserID); ht_log.Add("mLastUpdateBy", _login.mUserID); ht_log.Add("mOrgUnitID", _login.mOUID); _orderupload.BatchInsertOrderUpload(ListOrderUpload, ht_log); } /// <summary> /// 功能描述:根据指定条件读取Excel表格数据 /// </summary> /// <param name="Str_FileName">Excel表格所在的完整路径</param> /// <param name="Int_RowStart">起始行,从1开始</param> /// <param name="Int_ColStart">起始列,1到26</param> /// <param name="Int_ColEnd">终止列,1到26</param> /// <param name="Str_Array_Column">列名拼接字符串 格式为:列名1|列名2|列名3</param> /// <returns></returns> public static DataTable ReadFromExcelBySheet(string Str_FileName, string Str_Array_Column) { DataTable dt = new DataTable("Table1"); try { dt = ExcelHelper.InputFromExcel(Str_FileName, "sheet"); } catch (Exception ex) { throw ex; } return dt; } public bool IsReusable { get { return false; } } }
标签:
原文地址:http://www.cnblogs.com/Echo529/p/4334791.html