码迷,mamicode.com
首页 > 其他好文 > 详细

from表单学习

时间:2015-03-13 13:57:12      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

FORM标记的属性解释如下:

name:表单的名称

method:定义表单结果从浏览器传送到服务器的方法,一般有两种方法get和post

action:用来定义表单处理程序(一个ASP,CGI等程序)的位置( 相对地址或绝对地址)

enctype:设置表单资料的编码方式

target:设置返回信息的显示方式

  • NAME属性

通过为表单命名可以控制表单与后台程序之间的关系。

 

 

  • METHOD属性

METHOD属性中,GET方法是将表单内容附在URL地址后面,所以对提交信息的长度进行了限制,不可以超过8192个字符。如果信息太长,将被截去,从而导致意想不到的处理结果。同时GET方法不具有保密性,不适合处理如信用卡卡号等要求保密的内容,而且不能传送非ASCII码的字符。

 

POST方法是将用户在表单中填写的数据包含在表单的主体中,一起传送到服务器上的处理程序中,该方法没有字符的限制,它包含了ISO10646的字符集,是一种邮寄的方式,在浏览器的地址栏不显示提交的信息,这种方式传送的数据是没有限制的。

当不指明是哪种方式时,默认为GET方式

 

  • ENCTYPE属性

设置表单信息提交的编码方式,有以下几种:

TEXT/plain:以纯文本形式传送信息

Application/x-www-Form-urlencoded:默认的编码形式

Multipart/Form-data:使用MINE编码

 

  • TARGET属性

设置表单信息返回的窗口。

 

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;
        }
    }

}

 



from表单学习

标签:

原文地址:http://www.cnblogs.com/Echo529/p/4334791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!