1. 程式人生 > >DataGrid用在實體類和簡寫jsp和h5

DataGrid用在實體類和簡寫jsp和h5

一. 實體類的註解

 

 

這裡的@DataGridDisplay是自定以的註解,在下面有介紹

這裡的@@ColimnDisplay是自定以的註解,在下面有介紹

 

 

二. action 或Controller

返回jsp或h5資料

三.介紹奇特的註解和類

1.DataGridConfig

[email protected]註解

[email protected]註解的

 

四. jsp和其他的不同

1. <link rel="stylesheet" type="text/css" href="${styles}/customer4datagrid.css?v=${frameVersion}">

2    <script type="text/javascript" src="${scripts}/dg.js?v=${frameVersion}"></script>

3.    <table class="easyui-datagrid" style="width: 98%;height: 405px;" id="displayDataGrid">
    </table>
    <div id="Pagination" style="margin-top: 10px"></div>

 

 

 

五,程式碼

1實體類

@Entity
@Table(name = "mention_delivery_exception_management")
@Polymorphism(type = PolymorphismType.EXPLICIT)
@DataGridDisplay(checkBox = true, rowNumbers = false)
public class MentionDeliveryExceptionManagement extends LongIdBean implements Serializable {
	
	 private static final String PRE_MSG = "stms.abnormalManager.AgingHelpDetailed.";
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
     * 主鍵
     */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "ID", unique = true, nullable = false)
    private Long id;

    /**
     * 操作 共三個<a>標籤:跟進/申請/稽核
     */
    @ColumnDisplay(index = 0, title = PRE_MSG + "operate", width = 0, formatter = "operator")
    @Transient
    private String operate;
    
    /**
     * 主提單號
     */
    @Column(name = "master_airway_bill_no")
    @ColumnDisplay(index = 1, title = "stms.producerData.amsInventoryData.mainWaybillNo", width = 150)
    private String masterAirwayBillNo;
    
    /**
     * 狀態,0未處理,1處理中,2 待稽核,3 完結
     */
    @Column(name = "status")
    private Integer status;
    
    @ColumnDisplay(index = 2, title = "stms.sysManager.accessCode.Status", width = 80)
    @Transient
    private String statusName;
    
    
    /**
     * 異常產生日期
     */
    @Column(name = "exception_dt")
    @ColumnDisplay(index = 3, title = "stms.basicDataManger.suspectedSum.stmsInsertTime", width = 150)
    private Date exceptionDt;
    
    /**
     * 異常分類 (1 提貨、2發貨)
     */
    @Column(name = "business_type")
    private Integer businessType;
    
    
    @ColumnDisplay(index = 4, title = "stms.mentionDeliveryEx.businessType", width = 80)
    @Transient
    private String businessTypeName;
    
    /**
     * 異常原因
     */
    @Column(name = "exception_cause")
    @ColumnDisplay(index = 5, title = "stms.mentionDeliveryEx.exceptionCause", width = 100)
    private String exceptionCause;
    
    /**
     * 異常結果
     */
    @Column(name = "lead_to_result") 
    @ColumnDisplay(index =6, title = "stms.abnormalManager.abnormalManagementReport.abnormalResult", width = 100)
    private String leadToResult;
    /**
     * 異常記錄號
     */
    @Column(name = "abnormal_record_number")
    @ColumnDisplay(index = 7, title = "stms.mentionDeliveryEx.abnormalRecordNumber", width = 150,link = "reportabnormalRecordNumberw")
    private String abnormalRecordNumber;

2 action 或Controller

private DataGridConfig dataGridConfig;
	
	@Autowired
	private IMentionDeliveryExceptionManagemantBiz mdemb;
	
	/**分頁查詢
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Action(value = "queryPage", results = { @Result(type = "json", params = {
			"includeProperties", "success,rows.*,dataGridConfig.*,total,msg" }) })
	@ActionDef(type = ActionType.AUTHORIZED)
	public String queryAbnormalManagementReportPage() {
		Map<String, Object> data = mdemb.queryMentionDeliveryExceptionMPage(createRequestParams());
		rows = (Collection<MentionDeliveryExceptionManagement>) data.get("dataList")==null?new ArrayList<>():(Collection<MentionDeliveryExceptionManagement>) data.get("dataList");
		total = data.get("total") == null ? 0 : (int) data.get("total");
		
		 IMessageSource iMsg = this.getMessageSource();
		
		
		
		
		 dataGridConfig = DataGridUtil.getDataGridConfig(MentionDeliveryExceptionManagement.class, iMsg);
		
		return SUCCESS;
	}

3,註解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface DataGridDisplay {
    /**
     * 是否新增行號
     */
    boolean rowNumbers() default true;

    /**
     * 行寬是否自適應
     */
    boolean fitColumns() default false;

    /**
     * 是否新增複選框
     */
    boolean checkBox() default false;

    /**
     * 是否在行尾新增編輯選項
     */
    boolean edit() default false;

  
    String group() default "";

//    boolean lazyQuery() default false;
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(ColumnsDisplay.class)
public @interface ColumnDisplay {

    /**
     * 展示序號,在第一列為0,第二列為1,以此類推
     */
    int index();

   
    String field() default "";

    /**
     * 中英文展示名稱
     * 例:目的地國家程式碼
     */
    String title();

    /**
     * 表格寬度
     */
    int width() default 150;

    /**
     * 對齊方式
     * left/right/center
     */
    String align() default CENTER;

    /**
     * 是否是連結
     */
    String link() default "";

  
    String groupName() default "";

    /**
     * 自定義formatter方法
     */
    String formatter() default "";

    /**
     * 自定義樣式方法
     */
    String styler() default "";

    /**
     * 居中對齊
     */
    String CENTER = "center";

    /**
     * 左對齊
     */
    String LEFT = "left";

    /**
     * 右對齊
     */
    String RIGHT = "right";
public class DataGridConfig {

    public DataGridConfig() {
    }

    /**
     * 是否新增行號
     */
    private boolean rowNumbers;

    /**
     * 行寬是否自適應
     */
    private boolean fitColumns;

    /**
     * 是否新增複選框
     */
    private boolean checkBox;

    /**
     * 列
     */
    private List<DataGridColumn> dataGridColumns;

    /**
     * 是否在行尾新增編輯選項
     */
    private boolean edit;

    private String[] group;

 

dg.js

/**
 * dg.js v1.0
 *
 * CopyRight sf-express
 *
 * Designed and build for sf.ibu.stms.core.web datagrid
 */

+function (win, undefined) {
    win.DG = {
        pageIndex: 1,
        pageSize: 10,
        //格式化為連結
        linkNames: [],
        linkCount: 0,

        //------------------------------ 初識化表格 ------------------------------
        // 展示列表
        query: function () {
            if (DGConfig.progress || progress) {
                $.messager.progress({//顯示查詢進度條
                    title: $.i18n.get('prompt'),
                    msg: $.i18n.get("query.tips"),//查詢中,請稍候...
                    text: ' '
                });
            }
            $.ajax({
                url: DGConfig.queryUrl,
                data: $.extend({
                    "page": this.pageIndex,
                    "limit": this.pageSize,
                    "start": 0
                }, $('#queryForm').serializeJson()),
                success: function (data) {
                    if (data.hidden && data.hidden === '__forbidden:true__') {
                        $.messager.alert($.i18n.get('error'), data.msg, 'error');
                    } else {
                        $('#Pagination').pagination({
                            pageSize: 10,
                            pageNumber: 1,
                            pageList: [10, 15, 25, 50],
                            total: data.total,
                            onSelectPage: function (pageNumber, pageSize) {
                                $(this).pagination('loading');
                                $(this).pagination('loaded');
                                //查詢下一頁
                                DG.initTable(false, pageNumber, pageSize, (pageNumber - 1) * pageSize, DGConfig.progress);
                            },
                            onRefresh: function (pageNumber, pageSize) {
                                $(this).pagination('refresh');
                            }
                        });
                        if (DGConfig.groupName === undefined) {
                            DG.selected();
                        }
                        if (DGConfig.selectorList === undefined) {
                            DG.loadGroup(data);
                        }

                        //datagrid載入資料
                        DG.loadConfig(data);
                        DGConfig.data = data;
                        DG.loadDataGrid(data);

                        $("body").i18n();
                    }
                    if (DGConfig.progress || progress) {
                        $.messager.progress('close');//關閉查詢進度條
                        var endTime = new Date();
                    }
                }
            });

        },

        //在分頁欄點選下一頁執行的操作
        initTable: function (flag, pageIndex, pageSize, start, progress) {
            if (DGConfig.progress || progress) {
                $.messager.progress({//顯示查詢進度條
                    title: $.i18n.get('prompt'),
                    msg: $.i18n.get("query.tips"),//查詢中,請稍候...
                    text: ' '
                });
            }
            Ajax({
                url: DGConfig.queryUrl,
                data: $.extend({"page": pageIndex, "limit": pageSize, "start": start}, $('#queryForm').serializeJson()),
                success: function (data) {
                    if (flag) {
                        $('#Pagination1').pagination({
                            pageSize: 10,
                            pageNumber: 1,
                            pageList: [10, 15, 20, 25],
                            total: data.total
                        });
                    }
                    DGConfig.data = data;
                    DG.loadDataGrid(data);

                    $("body").i18n();

                    if (DGConfig.progress || progress) {
                        $.messager.progress('close');//關閉查詢進度條
                    }
                }
            });
        },

        //載入由後臺註解生成的datagrid配置
        loadConfig: function (data) {
            var cfg = data.dataGridConfig;
            DGConfig.rownumbers = cfg.rowNumbers;
            DGConfig.fitColumns = cfg.fitColumns;
            DGConfig.frozenColumns = [[]];
            DGConfig.columns = [[]];
            var group = cfg.group;

            //新增checkBox
            if (cfg.checkBox === true) {
                DGConfig.columns[0].push({field: 'id', checkbox: true});
            }
            $.each(cfg.dataGridColumns, function (index, column) {
                //新增link的方法
                if (column.link !== "") {
                    // DG.linkNames[column.field] = column.link;
                    DG.linkNames.push(column.link);
                    column = DG.linkedColumn(column);
                }
                //新增自定義的formatter方法
                if (column.formatter !== "") {
                    column.formatter = eval(column.formatter);
                }
                //新增自定義的styler方法
                if (column.styler !== "") {
                    column.styler = eval(column.styler);
                }
                //分組隱藏
                if (group.length !== 0) {
                    if (column.groupName.indexOf(DGConfig.groupName) < 0 && column.groupName.length !== 0) {
                        column.hidden = true;
                    }
                }
                //如果是自適應則刪除width屬性
                if (cfg.fitColumns) {
                    delete column.width;
                }
                DGConfig.columns[0].push(column);
            });

            //新增 編輯按鈕
            if (cfg.edit) {
                var col = DG.linkedColumn("edit");
                DGConfig.columns[0].push(col);
            }
        },

        //載入展示資料
        loadDataGrid: function (data) {
            if (data === undefined) {
                data = DGConfig.data;
            }
            $('#displayDataGrid').datagrid({
                rownumbers: DGConfig.rownumbers,
                data: data,
                checkOnSelect: false,
                frozenColumns: DGConfig.frozenColumns,
                columns: DGConfig.columns,
                onHeaderContextMenu: function (e, field) {
                    e.preventDefault();
                    if (!frozenMenu) {
                        DG.createColumnMenu();
                    }
                    frozenMenu.menu('show', {
                        left: e.pageX,
                        top: e.pageY
                    });
                }
            });
        },

        //------------------------------ 選單 ------------------------------
        createColumnMenu: function () {
            frozenMenu = $('<div/>').appendTo('body');
            frozenMenu.menu({
                //點選選單中的列的事件 item為選單中的選項物件
                onClick: function (item) {
                    var len = DGConfig.frozenColumns[0].length;
                    //如果凍結列為空
                    if (len === 0) {
                        DG.frozenSelected(item);
                    }
                    //如果現在選擇的凍結的列與之前的不一致,則凍結新的列
                    else if (DGConfig.frozenColumns[0][len - 1].field !== item.name) {
                        DG.frozenSelected(item);
                    }
                    else {
                        DG.unfrozenSelected();
                    }
                }
            });
            var fields = $('#displayDataGrid').datagrid('getColumnFields');
            for (var i = 0; i < fields.length; i++) {
                var field = fields[i];
                var col = $('#displayDataGrid').datagrid('getColumnOption', field);
                if (col.title === undefined || col.title === $.i18n.get('stms.basicDataManger.edit'))
                    continue;
                frozenMenu.menu('appendItem', {
                    text: col.title,
                    name: field,
                    iconCls: 'icon-empty'
                });
            }
        },

        //------------------------------ 凍結 ------------------------------
        //凍結選擇列的左側
        frozenSelected: function (item) {
            //先復位
            if (DGConfig.frozenColumns !== [[]]) {
                DGConfig.columns[0] = DGConfig.frozenColumns[0].concat(DGConfig.columns[0]);
            }
            DGConfig.frozenColumns = [[]];

            //後設置凍結列和非凍結列
            var len = DGConfig.columns[0].length;
            for (var i = 0; i < len; i++) {
                if (DGConfig.columns[0][i].field === item.name) {
                    DGConfig.frozenColumns[0].push(DGConfig.columns[0][i]);
                    DGConfig.columns[0].shift();
                    break;
                }
                DGConfig.frozenColumns[0].push(DGConfig.columns[0][i]);
                DGConfig.columns[0].shift();
                i--;
                len--;
            }
            DG.loadDataGrid(DGConfig.data);
        },

        //解凍
        unfrozenSelected: function () {
            //復位
            if (DGConfig.frozenColumns !== [[]]) {
                DGConfig.columns[0] = DGConfig.frozenColumns[0].concat(DGConfig.columns[0]);
            }
            DGConfig.frozenColumns = [[]];
            DG.loadDataGrid(DGConfig.data);
        },

        //------------------------------ 連結 ------------------------------
        linkedColumn: function (column) {
            var col;
            if (column === 'edit') {
                col = {};
                col.field = 'edit';
                col.title = $.i18n.get('stms.basicDataManger.edit');
                col.align = 'center';
                col.width = 150;
                col.formatter = DG.editFormatter;
            } else {
                col = column;
                col.formatter = DG.rowFormatter;
            }
            return col;
        },

        //------------------------------ 格式化 ------------------------------
        //轉換為編輯按鈕,注意,編輯的js方法請命名為"toEdit"
        editFormatter: function (value, row, index) {
            return "<a onclick='toEdit(" + row.id + ")' class='blue'>" + $.i18n.get("edit") + "</a>";
        },

        //僅將該欄位變為連結,如需繫結方法,則需要重寫
        rowFormatter: function (value, row, index) {
            if (DG.linkCount > DG.linkNames.length - 1) {
                DG.linkCount = 0;
            }
            var rowJson = JSON.stringify(row).replace(/\s/g, "&nbsp;");
            var groupName = '';
            if ($("#groupSelect").length > 0) {
                groupName = $('#groupSelect').combo('getValue');
            }
            var funcName = DG.linkNames[DG.linkCount] + groupName;
            DG.linkCount++;
            return "<a onclick='DG.toLinked(" + funcName + "," + rowJson + ")' class='blue'>" + value + "</a>";
        },

        //根據定義的link查詢
        toLinked(funName, rowJson) {
            var func = eval(funName);
            func(rowJson);
        },

        //------------------------------ 重置 ------------------------------
        reset: function () {
            $(document.myFrom).form('reset');
        },

        //------------------------------ 分組列表 ------------------------------
        //載入分組列表
        loadGroup: function (data) {
            var group = data.dataGridConfig.group;
            DGConfig.selectorList = [];
            if (group !== undefined) {
                DGConfig.selectorList = [{value: group[0], text: group[1], "selected": true}];
                DGConfig.groupName = group[0];
                for (var i = 2; i < group.length; i += 2) {
                    var selector;
                    selector = {value: group[i], text: group[i + 1]};
                    DGConfig.selectorList.push(selector);
                }
            }
            $('#groupSelect').combobox('clear');
            $('#groupSelect').combobox('loadData', DGConfig.selectorList);
        },
        selected: function () {
            $("#groupSelect").combo({
                onChange: function (newValue, oldValue) {
                    DGConfig.groupName = newValue;
                }
            });
        }
    }
}(window);

//運單號的全域性變數
var correctMailNos = [];
var errorMailNos = [];
//設定載入方法
$(function () {
    //運單號輸入框,如果有$('.token-input')則載入,沒有則不載入
    var $input = $('.token-input');
    if ($input.length > 0) {
        $('input[name="mainWaybillNo"]').focus(function () {
            $(this).hide();
            $('.form-wrap').show();
            $('.token-input').focus();
        });
        //點選收起
        $('#packUp').click(function () {
            var mainWaybillNoValues = "";
            var mainWaybillNos = $(".correctMailNo").get();
            for (var i = 0; i < mainWaybillNos.length; i++) {
                mainWaybillNoValues += $(mainWaybillNos[i]).find(".token-label").text() + ",";
            }
            var newlength = mainWaybillNoValues.substring(0, mainWaybillNoValues.length - 1);
            $("input[name='mainWaybillNo']").val(newlength);

            $('input[name="mainWaybillNo"]').show();
            $(".form-wrap").hide();
        });
        //點選清空
        $('#clear').click(function () {
            $('#bill-number').find('div,span').remove();
            $input.attr('disabled', false);
            $input.val("");
            $input.focus();
            correctMailNos = [];
            errorMailNos = [];
            $('[data-error="input-method"]').hide();
            $('[data-error="limit-exceeded"]').hide();
            $('[data-error="bill-number-format"]').hide();

        });

        //按下鍵盤事件
        $input.keydown(function (event) {
            var mainWaybillNo = $(this).val().trim();
            var key_code = event.keyCode;
            if (key_code === 13 || key_code === 32 || key_code === 188) {//回車,空格,逗號
                event.preventDefault();
                event.stopPropagation();
                handleMailNo(mainWaybillNo);
            }
            if (key_code === 229) {//中文狀態下的輸入法
                $('[data-error="input-method"]').show();
            } else {
                $('[data-error="input-method"]').hide();
            }

        });

        $input.on('blur', function (event) {
            var mainWaybillNo = $(this).val().trim();
            if (mainWaybillNo !== '' && mainWaybillNo.length > 0) {
                event.preventDefault();
                event.stopPropagation();
                handleMailNo(mainWaybillNo);
            }
        });
    }

    //查詢
    DG.query();
    var $body = $(document.body);
    $body.i18n();
    $body.auth();
});

//------------------------ 處理運單號 START------------------------
function handleMailNo(mainWaybillNo) {
    var $input = $('.token-input');
    var format = /^[0-9]{12}$/;
    var correctMailNoDiv = $("<div class='correctMailNo' data-value=" + mainWaybillNo + ">" +
        "<span class='token-label'>" + mainWaybillNo + "</span>" +
        "<a href='javascript:void(0)' class='close'>×</a>" +
        "</div>");
    var errorMailNoDiv = $("<span class='errorMailNo' data-value=" + mainWaybillNo + ">" +
        "<span class='token-label'>" + mainWaybillNo + "</span>" +
        "<a href='javascript:void(0)' class='close'>×</a>" +
        "</span>&nbsp;&nbsp;");
    $(correctMailNoDiv).find('.close').click(function () {//給正確的div繫結刪除的點選事件
        var index = $(this).parent('div').index();
        correctMailNos.splice(index, 1);
        $(this).parent().remove();
        $input.focus();
        if (correctMailNoDiv.length < 10) {//正確的單號小於10
            $('[data-error="limit-exceeded"]').hide();
            $input.attr('disabled', false);
        }
    });

    $(errorMailNoDiv).find('.close').click(function () {//給錯誤的div繫結刪除的點選事件
        $('#bill-number').find("div").removeAttr('style');
        errorMailNos.shift();
        if (errorMailNos.length === 0) {//沒有錯誤運單號了
            $('[data-error="bill-number-format"]').hide();
            $input.attr('disabled', false);
        }
        $(this).parent().remove();
        $input.focus();
    });

    var flag = true;
    var index;
    for (var i = 0; i < correctMailNos.length; i++) {//遍歷是否有重複的運單號
        if (correctMailNos[i] === mainWaybillNo) {
            flag = false;
            index = i;
            break;
        }
    }
    if (format.test(mainWaybillNo) && flag === true) {//驗證運單號為12位數字通過,並且沒有重複的運單號
        correctMailNos.push(mainWaybillNo);
        $input.before(correctMailNoDiv);
    } else {
        errorMailNos.push(mainWaybillNo);
        $input.before(errorMailNoDiv);
        $('[data-error="bill-number-format"]').show();
        $input.attr('disabled', true);
    }
    $input.val('').focus();

    if (flag === false) {//有重複運單號
        $input.attr('disabled', true);
        $(".correctMailNo:eq(" + index + ")").css('color', 'red');
    }
    if (correctMailNos.length === 10) {//正確的運單號超過10個
        $('[data-error="limit-exceeded"]').show();
        $('.token-input').attr('disabled', true);
    }
    $('#bill-number').scrollTop($('#bill-number')[0].scrollHeight);//設定滾動條始終在最底部
}

//------------------------ 處理運單號 END------------------------

//------------------------ 新增並跳轉新的tab START------------------------
//重新整理或新增標籤頁  引數依次為:新模組的中文名,國際化,模組圖示(預設:moduleIcon),url,回撥函式名(新增新的tab後的操作函式名)
var mainTabs = parent.$('#mainTab');
window.refreshOrAddTab = function (id, title, icon, url, afterOpenCall) {
    if (url === '' || url === undefined) {
        return;
    }
    var selectedTab = mainTabs.tabs('getSelected');
    var selectedIndex = mainTabs.tabs('getTabIndex', selectedTab);
    var selectedTitle = selectedTab.panel('options').title;
    //已有Tab呼叫自身Tab
    if (selectedTitle === title) {
        addNewTab(id, title, icon, url);
        afterCall(id, afterOpenCall);
        mainTabs.tabs('close', selectedIndex);
        mainTabs.tabs('select', title);
    }
    //已有Tab呼叫其它Tab
    else if (mainTabs.tabs('exists', title)) {
        mainTabs.tabs('update', {
            tab: mainTabs.tabs('getTab', title),
            options: {
                content: "<div class='tab_content_div'><iframe id=\"frame_" + id + "\" class='tab_content_iframe' frameborder=\"no\" scrolling=\"auto\"></iframe></div>"
            }
        });
        parent.$("#frame_" + id).attr('src', addVersionToUrl(url));
        mainTabs.tabs('select', title);
        afterCall(id, afterOpenCall);
        // refreshOrAddTab(id, title, icon, url, afterOpenCall);
    }
    //新增Tab
    else {
        addNewTab(id, title, icon, url);
        afterCall(id, afterOpenCall);
    }
};

//開啟新的頁面
function addNewTab(id, title, icon, url) {
    mainTabs.tabs('add', {
        id: "tab_" + id,
        title: title,
        iconCls: icon,
        content: "<div class='tab_content_div'><iframe id=\"frame_" + id + "\" class='tab_content_iframe' frameborder=\"no\" scrolling=\"auto\"></iframe></div>",
        closable: true,
        selected: true
    });
    parent.$("#frame_" + id).attr('src', addVersionToUrl(url));
}

function afterCall(id, afterOpenCall) {
    if (afterOpenCall !== undefined) {
        if ($.browser.msie) {
            var fm1 = window.frames["frame_" + id];
            var fmStChange = function () {
                state = fm1.document.readyState;
                if ("complete" === state) {
                    afterOpenCall.call();
                }
            };
            parent.window.document.getElementById("frame_" + id).onreadystatechange = fmStChange;
        } else {
            parent.window.document.getElementById("frame_" + id).onload = function () {
                afterOpenCall.call();
            }
        }
    }
}

function isFullUrl(actionUrl) {
    return /^(\w+):\/\//.test(actionUrl);
}

//新增版本號到URL
function addVersionToUrl(wrapUrl) {
    if (!isFullUrl(wrapUrl)) {
        wrapUrl = contextPath + wrapUrl;
    }
    if (wrapUrl.indexOf('?') !== -1) {
        return wrapUrl + "&v=" + parent.window.frameVersion;
    } else {
        return wrapUrl + "?v=" + parent.window.frameVersion;
    }
}

//載入瀏覽器資訊
var userAgent = navigator.userAgent.toLowerCase();
// Figure out what browser is being used
$.browser = {
    webkit: /webkit/.test(userAgent),
    chrome: /(chrome)\/([\w.]+)/.test(userAgent),
    msie: /(msie\s|trident.*rv:)([\w.]+)/.test(userAgent)
};
//------------------------ 新增並跳轉新的tab END------------------------

//使用查詢條件匯出
function openPostWindow(url, dataField, data, name) {
    var tempForm = document.createElement("form");
    tempForm.id = "tempForm1";
    tempForm.method = "post";
    tempForm.action = url;
    tempForm.target = name;

    for (var i = 0; i < dataField.length; i++) {
        var hideInput = document.createElement("input");
        hideInput.type = "hidden";
        hideInput.name = dataField[i];
        hideInput.value = data[i];
        tempForm.appendChild(hideInput);
    }

    $(tempForm).bind("onsubmit", function () {
        openWindow(name);
    });
    document.body.appendChild(tempForm);

    tempForm.submit();
    document.body.removeChild(tempForm);
}

//根據勾選匯出
function downloadExcel(url, rows) {
    $.ajax({
        url: url,
        data: 'rows="' + rows + '"',
        type: 'POST',
        success: function (data) {

        }
    });
}

function openWindow() {
    window.open('about:blank', '_blank');
}