純javascript寫的table加載,包含分頁、數據下載功能


 

直接先上效果圖看看先。

 

首先簡單說明一下,后面會給所涉及到的代碼都貼上來的。

1.excel圖標是一個用戶控件,用來觸發下載

2.首頁、上頁......每頁多少條,這一塊是一個整體,你可以選擇放置在表格下面,或者表格上面都可以

3.表格則也是單獨的一個,自己任意設置位置

4.復選框是否顯示,自己設置,並可設置綁定的值,並有自帶的方法可供你用於獲取選中的復選框的對象跟值

5.表格的單行、雙行、點擊、懸浮、標題欄、表格的樣式,都可以通過設置參數來修改,圖為自帶的效果

6.分頁默認每頁10行,分頁的檢測、復選框選擇的檢測,都已封裝好

7.每頁顯示的數量、以及跳轉到第幾頁的事件也都已經寫好

8.關於導出按鈕的數據導出功能,數據查詢的時候,將數據綁定到用戶控件中,而導出按鈕則用來檢測是否有復選框,如果有復選框,則用來先檢測用戶選中的進行拼接導出

 

功能大概就上面這些了吧,先給調用的方法貼上來。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CommonTable.aspx.cs" Inherits="ChildrenPageFolder_CommonTable" %>
<%@ Register TagPrefix="uc" TagName="tn_export" Src="~/UserControl/DataExport.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>添加表格</title>
    <script src="../js/CommonHtmlOperation.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        function PageInfoEvent() {
            var sql = "select count(*) from camera_fault t";
            var sqlQueryCount = ChildrenPageFolder_CommonTable.GetFaultCount(sql).value;    // 從后台獲取一個總數
            CommonJS.HtmlTableOperation.LoadPageTool("div_PageInfo", sqlQueryCount, TableDataEvent);    // 調用分頁加載的方法,傳入:divID,總數,回調函數
        }

        function TableDataEvent(nowPage) {
            var sql = "select * from camera_fault t";
            var dt = ChildrenPageFolder_CommonTable.GetFault(sql, nowPage, CommonJS.HtmlTableOperation.ShowItemCount).value;    // 從后台獲取數據,DataTable類型

            // 設置顯示的列名,每一列綁定的值
            CommonJS.HtmlTableOperation.Fields = ["CF_TYPE:故障類型", "CF_CREATEUSERNAME:申報人姓名", "CF_CREATEUSERID:申報人ID", "CF_CREATETIME:申報時間"];
            CommonJS.HtmlTableOperation.SetCheckbox(true, "CF_CAMERAID"); // 設置是否顯示復選框,以及復選框綁定那個列,傳數據庫的列名進去
            
            // 綁定行事件
            // CommonJS.HtmlTableOperation.trClickFun = trC;
            // CommonJS.HtmlTableOperation.trDblclickFun = trC;
            // CommonJS.HtmlTableOperation.trMouseFun = trC;
            // CommonJS.HtmlTableOperation.trOutFun = trC;
            
            CommonJS.HtmlTableOperation.LoadData("div_TableData", dt);          // 加載數據。傳遞 divID 以及 DataTable
        }

        // 獲取用戶選中的復選框的value值
        function GetCheckedValue() {
            CommonJS.HtmlTableOperation.GetCheckedValue("div_TableData");   
        }
        // 行的方法,返回行對象
        function trC(obj) {
            alert(obj.innerHTML);
        }
    </script>
</head>
<body onload="PageInfoEvent();TableDataEvent(1);">
    <form id="form1" runat="server">
    <uc:tn_export runat="server" ID="uc_export" />
    <div id="div_PageInfo">
    </div>
    <div id="div_TableData">
    </div>
    </form>
</body>
</html>

簡單說說代碼的調用:
1.自己定義好兩個div,一個用戶控件。兩個div呢,一個是放置上一頁下一頁的位置,另外一個div則用來放置table的位置,至於用戶控件,放上來之后,可以隱藏,也可以顯示,這個隨意。

2.PageInfoEvent的三行代碼,只需要理解第三行代碼就夠了,第二行的代碼通過ajax從后台獲取一個總數。而第三行代碼則是調用封裝的封裝代碼,你需要傳入三個參數,一個參數是分頁按鈕顯示的div的ID,之后就是總數,最后一個是回調函數,該回調函數是用來當分頁觸發之后調用的方法,封裝的方法會返回一個頁數回來。

3.TableDataEvent事件中,獲取頁數。從后台查詢該頁的數據

之后里面有各種參數設置,比如:顯示的列名、每個列對應綁定的數據列、是否顯示復選框、復選框綁定哪個列、設置每頁顯示的數量、行的單擊雙擊懸浮離開事件的綁定、表格的顏色,皆可自定義設置,當然,你若不設置,也都可以,都有默認值。

4.此處需要注意的是:數據類型暫時限制了C#中的DataTable類型,因為現有的項目全是這個類型的,所以先用這個數據類型來寫這個例子,如果要用其它類型,自己改代碼

5.后面還有兩個方法,一個是GetCheckedValue,是獲取用戶選中的值。TrC呢,是在加載table數據的時候,你綁定了回調方法,那么就在回調的時候,將當前行的對象返回給你自定義

 

下面是自己封裝好的JS方法了

/// <summary>
/// table 控件操作方式
/// <summary>
var CommonJS = {};
CommonJS.HtmlTableOperation = (function () {


    /// <summary>
    /// 靜態公有方法跟屬性
    /// <summary>
    var TableEvent = {

        // 表格涉及到的樣式
        tableCss: "font-size:13px;",
        trTitleCss: "text-align:center; COLOR: white; BACKGROUND-COLOR: #5d7b9d;",
        trCss1: "color: #000000;background-color: #ffffee;",
        trCss2: "color: #993300;background-color: #ffffaa;",
        trMouseCss: "color: #123456;background-color: #eaa;",
        trClickCss: "color: white;background-color: #6060F4;",

        /// <summary>
        /// 設置需要初始化的變量
        /// <summary>
        Fields: new Array(),        // 需要顯示的字段,表列名
        DispField: new Array(),     // 需要顯示的字段,中文名
        ShowItemCount: 10,          // 設置每頁顯示的數量
        // 是否顯示復選框以及復選框綁定的字段
        IsShowCheckbox: false,
        CheckboxField: "",
        SetCheckbox: function (isShow, field) {
            this.IsShowCheckbox = isShow;
            this.CheckboxField = field;
        },
        trClickFun: null,
        trDblclickFun: null,
        trMouseFun: null,
        trOutFun: null,

        /// <summary>
        /// 加載表格數據
        /// <summary>
        LoadData: function (divId, dt) {
            if (dt != null && dt != undefined) {

                document.getElementById(divId).innerHTML = "";

                var excelHead = "";
                var excelBody = "";

                // 整理好顯示的列
                if (this.Fields.length == 0) {
                    for (var i = 0; i < dt.Columns.length; i++) {
                        this.DispField.push(dt.Columns[i].Name);
                    }
                    this.Fields = this.DispField;
                } else {
                    var temFields = new Array();
                    var temDispField = new Array();
                    for (var i = 0; i < this.Fields.length; i++) {
                        temFields.push(this.Fields[i].split(":")[0]);
                        temDispField.push(this.Fields[i].split(":")[1]);
                    }
                    this.Fields = temFields;
                    this.DispField = temDispField;
                }

                // 確定是否需要顯示復選框
                var td_ckAll = null;
                var ck_CheckboxAll = null;
                var ck_checkboxIdAll = tableCheckboxAllId = divId + "_CheckboxAll";
                var ck_checkboxItemName = tableCheckboxItemName = divId + "_CheckboxItem";
                if (this.IsShowCheckbox) {
                    ck_CheckboxAll = CreateElement("input");
                    ck_CheckboxAll.type = "checkbox";
                    ck_CheckboxAll.title = "全選/全不選";
                    ck_CheckboxAll.id = ck_checkboxIdAll;
                    ck_CheckboxAll.setAttribute("checkboxItemName", ck_checkboxItemName);
                    ck_CheckboxAll.onclick = function (e) { TableCheckboxCheckAll(this); }

                    td_ckAll = CreateElement("td");
                    td_ckAll.appendChild(ck_CheckboxAll);
                }

                // 創建表格的標題行
                var thead = CreateElement("thead");
                var thead_tr = CreateElement("tr");
                thead_tr.style.cssText = this.trTitleCss;
                if (this.IsShowCheckbox) { thead_tr.appendChild(td_ckAll); }
                for (var i = 0; i < this.DispField.length; i++) {
                    var thead_tr_td = CreateElement("td");
                    thead_tr_td.innerHTML = this.DispField[i];
                    thead_tr.appendChild(thead_tr_td);
                    excelHead += this.DispField[i] + "\t";
                }
                thead.appendChild(thead_tr);


                // 創建表格的數據行
                var tbody = CreateElement("tbody");
                for (var i = 0; i < dt.Rows.length && i < this.ShowItemCount; i++) {
                    var tbody_tr = CreateElement("tr");
                    var tr_titleMsg = "";

                    if (this.IsShowCheckbox) {
                        // 復選框
                        var ck_CheckboxItem = CreateElement("input");
                        ck_CheckboxItem.type = "checkbox";
                        ck_CheckboxItem.id = ck_checkboxItemName;
                        ck_CheckboxItem.name = ck_checkboxItemName;
                        ck_CheckboxItem.setAttribute("checkboxAllId", ck_checkboxIdAll);
                        ck_CheckboxItem.value = dt.Rows[i][this.CheckboxField] == undefined ? "" : dt.Rows[i][this.CheckboxField];
                        ck_CheckboxItem.onclick = function () { TableCheckboxCheck(this); }
                        var tbody_tr_td_checkbox = CreateElement("td");
                        tbody_tr_td_checkbox.appendChild(ck_CheckboxItem);
                        tbody_tr.appendChild(tbody_tr_td_checkbox);
                    }

                    // 數據內容
                    for (var j = 0; j < this.Fields.length; j++) {
                        var tbody_tr_td = CreateElement("td");
                        tbody_tr_td.innerHTML = dt.Rows[i][this.Fields[j]];
                        tbody_tr.appendChild(tbody_tr_td);
                        tr_titleMsg += this.DispField[j] + ":" + dt.Rows[i][this.Fields[j]] + "\r\n";
                        excelBody += tbody_tr_td.innerHTML + "\t";
                    }
                    excelBody += "\n";

                    tbody_tr.title = tr_titleMsg.substring(0, tr_titleMsg.length - 2);        // 添加行的title提示內容
                    if (i % 2 == 1) { tbody_tr.style.cssText = this.trCss2; } else { tbody_tr.style.cssText = this.trCss1; }

                    tbody_tr.setAttribute("trNowClass", tbody_tr.style.cssText);

                    // 數據行的事件綁定
                    tbody_tr.onclick = function () { trClickEvent(this); }
                    tbody_tr.ondblclick = function () { trDblclickEvent(this); }
                    tbody_tr.onmouseover = function () { trMouseEvent(this); }
                    tbody_tr.onmouseout = function () { trOutEvent(this); }

                    tbody.appendChild(tbody_tr);
                }


                // 將拼接的內容放置到表格中,並添加到頁面
                var table = CreateElement("table");
                table.style.cssText = this.tableCss;
                table.appendChild(thead);
                table.appendChild(tbody);
                document.getElementById(divId).appendChild(table);
                BindExcelExportData(excelHead, excelBody);
            }
        },

        /// <summary>
        /// 加載分頁信息
        /// <summary>
        LoadPageTool: function (divId, itemCount, callback) {
            var pageDivObject = document.getElementById(divId);
            var buttonCss = "padding:2px; margin:2px; ";
            var spanCss = "padding:2px; font-size:13px; ";

            // 頁碼
            {
                var spanInfo = CreateElement("span");
                spanInfo.id = "span_" + divId;
                var pageCount = Math.floor(itemCount / this.ShowItemCount)
                if (itemCount % this.ShowItemCount != 0) { pageCount++; }

                spanInfo.setAttribute("attr_PageCount", pageCount);
                spanInfo.setAttribute("attr_NowPage", 1);
                spanInfo.setAttribute("attr_ItemCount", itemCount);
                spanInfo.setAttribute("attr_PageItemCount", this.ShowItemCount);
                spanInfo.setAttribute("attr_TxtNowPage", "txt_NowPage_" + divId);


                var spanInfo1 = CreateElement("span");
                spanInfo1.innerHTML = "當前第";
                var spanInfo2 = CreateElement("span");
                spanInfo2.innerHTML = "/" + pageCount + "頁&nbsp;共" + itemCount + "項";
                var txtNowPage = CreateElement("input");
                txtNowPage.id = "txt_NowPage_" + divId;
                txtNowPage.type = "text";
                txtNowPage.size = 2;
                txtNowPage.value = 1;
                txtNowPage.title = "輸入數值后按回車鍵觸發";
                txtNowPage.style.cssText = "font-weight: bold;color: Blue; text-align: center;";
                txtNowPage.onkeyup = function () { this.value = this.value.replace(/\D/g, ''); }
                txtNowPage.onafterpaste = function () { this.value = this.value.replace(/\D/g, ''); }
                txtNowPage.onblur = function () { alert("離開事件"); }

                spanInfo.style.cssText = spanCss;
                spanInfo.appendChild(spanInfo1);
                spanInfo.appendChild(txtNowPage);
                spanInfo.appendChild(spanInfo2);


                var spanPageItemCount = CreateElement("span");

                var spanPageItemCount1 = CreateElement("span");
                spanPageItemCount1.innerHTML = "&nbsp;每頁顯示";
                var spanPageItemCount2 = CreateElement("span");
                spanPageItemCount2.innerHTML = "條";
                var txtPageItemCount = CreateElement("input");
                txtPageItemCount.type = "text";
                txtPageItemCount.size = 2;
                txtPageItemCount.value = this.ShowItemCount;
                txtPageItemCount.title = "輸入數值后按回車鍵觸發";
                txtPageItemCount.style.cssText = "font-weight: bold;color: Blue; text-align: center;";
                txtPageItemCount.onkeyup = function () { this.value = this.value.replace(/\D/g, ''); }
                txtPageItemCount.onafterpaste = function () { this.value = this.value.replace(/\D/g, ''); }
                txtPageItemCount.onblur = function () { UpdateItemCount(divId, itemCount, this.value, callback); }

                spanPageItemCount.style.cssText = spanCss;
                spanPageItemCount.appendChild(spanPageItemCount1);
                spanPageItemCount.appendChild(txtPageItemCount);
                spanPageItemCount.appendChild(spanPageItemCount2);

            }

            // 按鈕
            {
                var btnFirst = CreateElement("input");
                btnFirst.type = "button";
                btnFirst.value = "首頁";
                btnFirst.title = btnFirst.value;
                btnFirst.id = divId + "_FirstButtonId";
                btnFirst.style.cssText = buttonCss;
                btnFirst.onclick = function (e) { PageEvent(spanInfo, "first", callback); }

                var btnPre = CreateElement("input");
                btnPre.type = "button";
                btnPre.value = "上頁";
                btnPre.title = btnPre.value;
                btnPre.style.cssText = buttonCss;
                btnPre.onclick = function (e) { PageEvent(spanInfo, "pre", callback); }

                var btnNext = CreateElement("input");
                btnNext.type = "button";
                btnNext.value = "下頁";
                btnNext.title = btnNext.value;
                btnNext.style.cssText = buttonCss;
                btnNext.onclick = function (e) { PageEvent(spanInfo, "next", callback); }

                var btnEnd = CreateElement("input");
                btnEnd.type = "button";
                btnEnd.value = "尾頁";
                btnEnd.title = btnEnd.value;
                btnEnd.style.cssText = buttonCss;
                btnEnd.onclick = function (e) { PageEvent(spanInfo, "end", callback); }

                var btnExport = CreateElement("input");
                btnExport.type = "button";
                btnExport.value = "導出";
                btnExport.title = btnEnd.value;
                btnExport.style.cssText = buttonCss;
                btnExport.onclick = function (e) { DataExportToExcel(); }
            }

            pageDivObject.innerHTML = "";
            pageDivObject.appendChild(btnFirst);
            pageDivObject.appendChild(btnPre);
            pageDivObject.appendChild(btnNext);
            pageDivObject.appendChild(btnEnd);
            pageDivObject.appendChild(btnExport);
            pageDivObject.appendChild(CreateElement("br"));
            pageDivObject.appendChild(spanInfo);
            pageDivObject.appendChild(spanPageItemCount);
        },


        /// <summary>
        /// 獲取用戶選中的項
        /// <summary>
        GetCheckedValue: function (divId) { return divId + "_CheckboxItem"; }

    };


    /// <summary>
    /// 私有屬性
    /// <summary>
    {
        // 綁定為當前選中的行,用來行變色使用
        var trClickRowObject = null;

        // 表格的全選復選框ID跟數據的復選框NAME
        var tableCheckboxAllId = "";
        var tableCheckboxItemName = "";
    }


    /// <summary>
    /// 私有方法
    /// <summary>
    {
        /// <summary>
        /// 分頁及復選框使用的方法
        /// <summary>
        {
            /// <summary>
            /// 當更換每頁顯示的數量時
            /// <summary>
            var UpdateItemCount = function (divId, itemCount, pageItemCount, callback) {
                CommonJS.HtmlTableOperation.ShowItemCount = pageItemCount;
                CommonJS.HtmlTableOperation.LoadPageTool(divId, itemCount, callback);
                callback(1);
            }

            /// <summary>
            /// 頁面跳轉檢測
            /// <summary>
            var PageEvent = function (spanPage, type, callback) {
                var pageCount = spanPage.getAttribute("attr_PageCount");
                var nowPage = spanPage.getAttribute("attr_NowPage");
                var itemCount = spanPage.getAttribute("attr_ItemCount");
                var pageItemCount = spanPage.getAttribute("attr_PageItemCount");
                var txtNowPage = spanPage.getAttribute("attr_TxtNowPage");
                var newPage = nowPage;
                switch (type) {
                    case "first": if (nowPage == 1) { alert("已經是首頁!"); return; } else { nowPage = 1; } break;
                    case "pre": if (nowPage - 1 < 1) { alert("已經是首頁!"); return; } else { nowPage = nowPage - 1; } break;
                    case "next": if (nowPage + 1 > pageCount) { alert("已經是尾頁!"); return; } else { nowPage = nowPage + 1; } break;
                    case "end": if (nowPage == pageCount) { alert("已經是尾頁!"); return; } else { nowPage = pageCount; } break;
                }

                spanPage.setAttribute("attr_NowPage", nowPage);

                // spanPage.innerHTML = "當前第" + nowPage + "/" + pageCount + "頁&nbsp;共" + itemCount + "項";
                document.getElementById(txtNowPage).value = nowPage;

                // 回調,返回用戶需要的參數
                callback(nowPage);
            }

            /// <summary>
            /// 全選按鈕事件、單個復選框點擊
            /// <summary>
            var TableCheckboxCheckAll = function (obj) {
                var cks = document.getElementsByName(obj.getAttribute("checkboxItemName"));
                for (var i = 0; i < cks.length; i++) { cks[i].checked = obj.checked; }
            }
            var TableCheckboxCheck = function (obj) {
                var ckAllObj = document.getElementById(obj.getAttribute("checkboxAllId"));
                var ckNames = document.getElementsByName(obj.name);
                for (var i = 0; i < ckNames.length; i++) {
                    ckAllObj.checked = ckNames[i].checked
                    if (!ckNames[i].checked) { break; }
                }
            }
        }


        /// <summary>
        /// 數據行涉及的事件:單擊、雙擊、懸浮、離開...
        /// <summary>
        {
            function trClickEvent(trObj) {
                if (trClickRowObject != trObj && trClickRowObject != null) {
                    trClickRowObject.style.cssText = trClickRowObject.getAttribute("trNowClass");
                }
                trObj.style.cssText = CommonJS.HtmlTableOperation.trClickCss;
                trClickRowObject = trObj

                if (CommonJS.HtmlTableOperation.trClickFun != null) {
                    CommonJS.HtmlTableOperation.trClickFun(trObj);
                }
            }
            function trDblclickEvent(trObj) {
                if (CommonJS.HtmlTableOperation.trDblclickFun != null) {
                    CommonJS.HtmlTableOperation.trDblclickFun(trObj);
                }
            }
            function trMouseEvent(trObj) {
                if (trClickRowObject != trObj) {
                    trObj.style.cssText = CommonJS.HtmlTableOperation.trMouseCss;
                }
                if (CommonJS.HtmlTableOperation.trMouseFun != null) {
                    CommonJS.HtmlTableOperation.trMouseFun(trObj);
                }
            }
            function trOutEvent(trObj) {
                if (trClickRowObject != trObj) {
                    trObj.style.cssText = trObj.getAttribute("trNowClass");
                }
                if (CommonJS.HtmlTableOperation.trOutFun != null) {
                    CommonJS.HtmlTableOperation.trOutFun(trObj);
                }
            }
        }


        /// <summary>
        /// 將查詢出來的數據綁定到導出的隱藏變量中
        /// <summary>
        function BindExcelExportData(headStr, bodyStr) {

            //            var ucFn = document.getElementById("uc_export_hf_fileName");
            //            if (ucFn != null && ucFn != undefined) {
            //                var fileName = "Excel_" + (new Date()).toLocaleDateString() + ".xls";
            //                fileName.replace("年", "_").replace("月", "_").replace("日", "");
            //                document.getElementById("uc_export_hf_fileName").value = fileName;
            //            }

            var ucH = document.getElementById("uc_export_hf_headStr");
            if (ucH != null && ucH != undefined) {
                document.getElementById("uc_export_hf_headStr").value = headStr;
            }

            var ucB = document.getElementById("uc_export_hf_bodyStr");
            if (ucB != null && ucB != undefined) {
                document.getElementById("uc_export_hf_bodyStr").value = bodyStr;
            }

        }
        function DataExportToExcel() {


            // 檢測用戶選中項
            var ckAll = document.getElementById(tableCheckboxAllId);
            var cks = document.getElementsByName(tableCheckboxItemName);

            if (ckAll != null) {

                var headStr = GetCheckedRowStr(ckAll);

                var bodyStr = "";
                if (ckAll.checked) {
                    for (var i = 0; i < cks.length; i++) { bodyStr += GetCheckedRowStr(cks[i]) + "\n"; }
                } else {
                    for (var i = 0; i < cks.length; i++) { if (cks[i].checked) { bodyStr += GetCheckedRowStr(cks[i]) + "\n"; } }
                }

                BindExcelExportData(headStr, bodyStr);
            }

            // 調用下載事件
            var ucD = document.getElementById("uc_export_img_downExcel");
            if (ucD != null && ucD != undefined) {
                document.getElementById("uc_export_img_downExcel").click();
            }
        }
        function GetCheckedRowStr(ckObj) {
            var textArr = ckObj.parentElement.parentElement.childNodes;
            var trStr = "";
            for (var i = 1; i < textArr.length; i++) {
                trStr += textArr[i].innerText + "\t";
            }
            return trStr;
        }

        /// <summary>
        /// 創建節點對象
        /// <summary>
        var CreateElement = function (elementName) { return document.createElement(elementName); }
    }

    return TableEvent;

})();

 

下面的是ajax調用的后台的兩個方法,一個是獲取總數,一個是獲取數據

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class ChildrenPageFolder_CommonTable : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        AjaxPro.Utility.RegisterTypeForAjax(typeof(ChildrenPageFolder_CommonTable));
        
    }

    /// <summary>
    /// 執行傳入的sql獲取報障的數據
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    [AjaxPro.AjaxMethod]
    public DataTable GetFault(string sql, int pageNum, int itemCount)
    {
        int beginNum = (pageNum - 1) * itemCount;
        int endNum = pageNum * itemCount;
        string fenyeSql = "select * from(select a.*,rownum r from (" + sql + ") a where rownum <= " + endNum + ") b where r > " + beginNum;
        DataTable dt = DataAccessManager.GetDataTable(fenyeSql, "PGISAPP");
        return dt;
    }

    /// <summary>
    /// 統計sql的總數
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    [AjaxPro.AjaxMethod]
    public int GetFaultCount(string sql)
    {
        int count = DataAccessManager.GetItemsCount(sql, "PGISAPP");
        return count;
    }

}

 

 

接下來的兩個是用戶控件的前台代碼跟后台代碼

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DataExport.ascx.cs" Inherits="UserControl_DataExport" %>
<asp:ImageButton ID="img_downExcel" runat="server" 
    ImageUrl="~/images/excel.png" ToolTip="導出Excel"
    Width="26px" Height="26px" ImageAlign="AbsMiddle" 
    onclick="img_downExcel_Click" />
    <asp:HiddenField ID="hf_fileName" runat="server" Value="" />
    <asp:HiddenField ID="hf_headStr" runat="server" Value="" />
    <asp:HiddenField ID="hf_bodyStr" runat="server" Value="" />
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class UserControl_DataExport : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    /// <summary>
    /// 
    /// </summary>
    protected void img_downExcel_Click(object sender, ImageClickEventArgs e)
    {
        try
        {

            // 創建標題行
            string excelHead = "";
            string[] dhs = new string[] { "標題1", "標題2" };
            for (int i = 0; i < dhs.Length; i++)
            {
                excelHead += dhs[i] + "\t";
            }

            // 創建數據行
            string excelBody = "";
            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    excelBody += "" + j + "\t";
                }
                excelBody += "\n";
            }

            excelHead = this.hf_headStr.Value;
            excelBody = this.hf_bodyStr.Value;

            DownExcel(excelHead, excelBody);
        }
        catch (Exception ex)
        {
        }
    }


    /// <summary>
    /// Excel下載輸出
    /// </summary>
    /// <param name="fileName">文件名稱</param>
    /// <param name="headStr">標題欄</param>
    /// <param name="bodyStr">內容主體</param>
    public void DownExcel(string headStr,string bodyStr)
    {
        // 文件名稱
        string fileName = "Excel_" + System.DateTime.Now.ToShortDateString() + ".xls"; // 或者 .et

        Response.Clear();
        Response.Buffer = true;
        System.IO.StringWriter sw = new System.IO.StringWriter();
        sw.WriteLine(headStr);
        sw.WriteLine(bodyStr);
        sw.Close();
        Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
        Response.ContentType = "application/ms-excel";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        Response.Write(sw);
        Response.End();
    }

}


嘿嘿,大功告成,整個過程如上,有問題再聯系。

另外,若轉載,請添加轉載說明,該文為自己原創的,有好的建議,一塊學習,一塊修改進步,謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM