C#.NET MVC datatable 插件加载数据

页面

public ActionResult Index()

 {
            var result = new GrupTrViewModel();
            result.LS_ACNT_DTB = DateTime.Now.ToString("yyyy/MM/dd");
            result.LS_ACNT_DTE = DateTime.Now.ToString("yyyy/MM/dd");
            result.GRUP_ADD = _odrFunctionsService.Chk_Permission("L_BJ2.asp", HttpContext.User.Identity.Name);
            return PartialView("Index", result);
 }


html页面


<div class="modal-footer">
            <div class="col-sm-12 text-right">
                <button id="BtnSearch" class="btn btn-primary" type="button" title="搜尋紀錄" onclick="funLoadSearchData();"><i class="fa fa-search"></i> 搜尋</button>
                <button class="btn btn-default btn-primary" onclick="funClearForm();"><i class="fa fa-remove"></i>清除</button>
            </div>

 </div>

<div class="table-responsive">
    <table class="display table table-striped table-bordered" data-order='[[ 2, "ASC" ]]' id="GrupTable">
        <thead>
            <tr>
                <th class="text-center" nowrap>應付帳號</th>
                <th class="text-center" nowrap>請款日期</th>
                <th class="text-center" nowrap>請款單號</th>
                <th class="text-center" nowrap data-orderable="false">請款摘要</th>
                <th class="text-center" nowrap data-orderable="false">請款金額</th>
                <th class="text-center" nowrap data-orderable="false">承辦人員</th>
                <th class="text-center" nowrap data-orderable="false">單據作廢</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</div>


JS文件

$(document).ready(function () {
    funLoadSearchData();
});
//搜尋按鈕
function funGetSearchDate() {
    var LS_ACCT_NOP = document.getElementById("LS_ACCT_NOP").value;//應付帳號
    var LS_PORD_NO = document.getElementById("LS_PORD_NO").value;//請款單號
    var LS_ACNT_DTB = document.getElementById("LS_ACNT_DTB").value;//單據期間
    var LS_ACNT_DTE = document.getElementById("LS_ACNT_DTE").value;//單據期間
    var LS_VOID_FG = document.getElementById('LS_VOID_FG').checked ? document.getElementById('LS_VOID_FG').value : "0"//含已作廢單據 
    var paraJson = new Object();
    paraJson = {
        "LS_ACCT_NOP": LS_ACCT_NOP,//應付帳號
        "LS_PORD_NO": LS_PORD_NO,//請款單號 
        "LS_ACNT_DTB": LS_ACNT_DTB,//單據期間
        "LS_ACNT_DTE": LS_ACNT_DTE,//單據期間
        "LS_VOID_FG": LS_VOID_FG//含已作廢單據
    };
    return paraJson;
}


//查詢主頁加載數據列表
var oTable;
function funLoadSearchData() {
    if (oTable != undefined && oTable != null)
        oTable.destroy();
    oTable = $('#GrupTable').DataTable({
        "serverSide": true,
        "ajax": {
            "type": "POST",
            "url": '/GrupTr/IndexDataHandler',
            "traditional": true,
            "contentType": 'application/json; charset=utf-8',
            'data': function (result) {
                result.search.value = JSON.stringify(funGetSearchDate());
                return data = JSON.stringify(result);
            },
            error: function () {
                alertify.error("資料載入失敗,請重新整理(F5)頁面");
            }
        },
        'bRetrieve': true,
        'paging': true,
        'bInfo': true,
        "columnDefs": [
                {
                    "targets": [6],
                    "visible": false,
                    "searchable": false
                }
        ],
        "scrollY": 570,
        "scrollX": false,
        "scrollCollapse": true,
        "scroller": {
            loadingIndicator: true
        },
        "aLengthMenu": [20, 50,100], //更改显示记录数选项
        // 延遲載入
        "deferRender": true,
        "language": {
            "sInfoFiltered": " "
        },
        "columns": [
            {
                "targets": 0,
                "data": "ACCT_NOR_NM",
                "class": "text-center"


            },
            {
                "targets": 1,
                "data": "PORD_DT",
                "class": "text-left"
            },
             {
                 "targets": 2,
                 "data": "PORD_NO",
                 "class": "text-center",
                 "render": function (data, type, row, meta) {
                     if (row.PORD_NO_URL == "1") {
                         var rowData = "<a href='/GrupTr/GrupTrDetails?PORD_NO=" + row.PORD_NO + "' id='btn-details' type='button' >" + row.PORD_NO + "</a>";
                         return "<div class='text-center'>" + rowData + "</div>";
                     } else {
                         return "<div class='text-center'>" + row.PORD_NO + "</div>";
                     }
                 }
             },
             {
                 "targets": 3,
                 "data": "LS_SUB_DR",
                 "class": "text-left"
             },
             {
                 "targets": 4,
                 "data": "AP_AM",
                 "class": "text-right"
             },
             {
                 "targets": 5,
                 "data": "OPEMP_CD_NM",
                 "class": "text-center"
             },
             {
                 "targets": 6,
                 "data": "VOID_FG",
                 "class": "text-center",
                 "render": function (data, type, row, meta) {
                     if (document.getElementById('LS_VOID_FG').checked) {
                         if (row.VOID_FG == "1") {
                             return "<div class='text-center'><img src='/images/bonus1.gif' border='0'></div>";
                         } else {
                             return "<div class='text-center'><img src='/images/bonus0.gif' border='0'></div>";
                         }
                     } else {
                         return "";
                     }
                 }
             }
        ]
    });
    //處理列表欄位切換顯示
    if (document.getElementById('LS_VOID_FG').checked) {
        var showArr = [[6]];
        //處理顯示列
        var column = oTable.columns(showArr[0][0]);
        column.visible(true);
    }
}


查询数据


[HttpPost, ActionName("IndexDataHandler")]
        public ActionResult IndexDataHandler(DTParameters param)
        {
            try
            {
                var result = this.searchIndexList.searchIndexList(_trpordService, param, HttpContext.User.Identity.Name, _odrFunctionsService, _trempService, _trporddService);
                return Json(result);
            }
            catch (Exception ex)
            {
                logger.Error(LogUtility.GetExceptionDetails(ex));
                return Json(new { error = ex.Message });
            }
        }


namespace Woof.Web.Services
{
    public class OrderGrupTrSearchIndexList
    {
        internal DTResult<GrupTrViewModel> searchIndexList(ITrpordService _trpordService, DTParameters param, string strUserId,OdrFunctionsService _odrFunctionsService,ITrempService _trempService,ITrporddService _trporddService)
        {
            OdrFunctionsService odrFun = new OdrFunctionsService();
            string strJsonParam = param.Search.Value;
            string ACCT_NOP = "";
            string ACCT_NOR_NM = "";
            string PORD_NO_URL = "";
            string OPEMP_CD_NM = "";
            string AP_AM = "";
            DataTable dtSelGrupTrInfo = _trpordService.SelGrupTrInfo(strJsonParam, strUserId);
            if (dtSelGrupTrInfo != null && dtSelGrupTrInfo.Rows.Count>0)
            {
                dtSelGrupTrInfo.Columns.Add("PORD_NO_URL", typeof(string));
                dtSelGrupTrInfo.Columns.Add("ACCT_NOR_NM", typeof(string));
                dtSelGrupTrInfo.Columns.Add("OPEMP_CD_NM", typeof(string));
                dtSelGrupTrInfo.Columns.Add("AP_AM", typeof(string));
                dtSelGrupTrInfo.Columns.Add("LS_SUB_DR", typeof(string));
                for (int i = 0, j = dtSelGrupTrInfo.Rows.Count; i < j; i++)
                {
                    if (_odrFunctionsService.Chk_Permission("V_GRUP_TR.asp", strUserId))
                    {
                        PORD_NO_URL = "1";
                        dtSelGrupTrInfo.Rows[i]["PORD_NO_URL"] = PORD_NO_URL;
                    }
                    if (!string.IsNullOrWhiteSpace(dtSelGrupTrInfo.Rows[i]["ACCT_NOP"].ToString()))
                    {
                        ACCT_NOR_NM = _odrFunctionsService.GetACCT_NM(dtSelGrupTrInfo.Rows[i]["ACCT_NOP"].ToString(), out ACCT_NOP);
                        dtSelGrupTrInfo.Rows[i]["ACCT_NOR_NM"] = ACCT_NOR_NM;
                    }
                    if (!string.IsNullOrWhiteSpace(dtSelGrupTrInfo.Rows[i]["OPEMP_CD"].ToString()))
                    {
                        DataTable dtSelEmpNm = _trempService.SelEmpNm(dtSelGrupTrInfo.Rows[i]["OPEMP_CD"].ToString());
                        if (dtSelEmpNm != null && dtSelEmpNm.Rows.Count>0)
                        {
                            OPEMP_CD_NM = dtSelEmpNm.Rows[0]["EMP_CNM"].ToString();
                        }
                        dtSelGrupTrInfo.Rows[i]["OPEMP_CD_NM"] = OPEMP_CD_NM;
                    }
                    if (!string.IsNullOrWhiteSpace(dtSelGrupTrInfo.Rows[i]["PORD_NO"].ToString()))
                    {
                        DataTable dtSelApAmTr = _trporddService.SelApAmTr(dtSelGrupTrInfo.Rows[i]["PORD_NO"].ToString());
                        if (dtSelApAmTr != null && dtSelApAmTr.Rows.Count>0)
                        {
                            double dbAP_AM = 0;
                            double.TryParse( dtSelApAmTr.Rows[0]["AP_AM"].ToString(),out dbAP_AM);
                            AP_AM = String.Format("{0:0,0}", Convert.ToDecimal(Math.Round(dbAP_AM, 0, MidpointRounding.AwayFromZero).ToString()));
                        }
                        dtSelGrupTrInfo.Rows[i]["AP_AM"] = AP_AM == "00" ? "0" : AP_AM;
                    }
                    dtSelGrupTrInfo.Rows[i]["LS_SUB_DR"] = dtSelGrupTrInfo.Rows[i]["SUB_DR"].ToString() + dtSelGrupTrInfo.Rows[i]["SUB_DR1"].ToString();
                }
            }
           
            var originalData = ModelConvertHelper<GrupTrViewModel>.ConvertToModel(dtSelGrupTrInfo);//實體轉換輔助類(將datatable轉換model)


            // 取得原始資料數目
            int originalDataTotalRecords = originalData.Count;


            // 取出單一欄位搜尋值放入字串集合
            List<string> listColumnSearch = new List<string>();
            foreach (var col in param.Columns)
                listColumnSearch.Add(col.Search.Value);


            // 取得篩選後的資料
            var dataFilter = GetFilterData(originalData, param.Search.Value, listColumnSearch);


            // 取得篩選後的資料數目
            int dataFilteredRecords = dataFilter.Count();


            // 頁面實際呈現資料
            var displayData = GetDisplayData(dataFilter, param.SortOrder, param.Start, param.Length);


            var result = new DTResult<GrupTrViewModel>
            {
                draw = param.Draw,
                data = displayData,
                recordsFiltered = dataFilteredRecords,
                recordsTotal = originalDataTotalRecords
            };
            return result;
        }
        /// <summary>
        /// 頁面實際呈現資料
        /// </summary>
        /// <param name="dataFilter">已篩選過的資料</param>
        /// <param name="strSortOrder">優先排序的欄位名稱</param>
        /// <param name="intStart">資料起始值</param>
        /// <param name="intLength">每頁呈現的資料數目</param>
        /// <returns></returns>
        private List<GrupTrViewModel> GetDisplayData(IQueryable<GrupTrViewModel> dataFilter, string strSortOrder, int intStart, int intLength)
        {
            return
                dataFilter
                .SortBy(strSortOrder)
                .Skip(intStart)
                .Take(intLength)
                .ToList();
        }


        private IQueryable<GrupTrViewModel> GetFilterData(IEnumerable<GrupTrViewModel> originalData, string strGlobalSearch, List<string> listColumnSearch)
        {
            IQueryable<GrupTrViewModel> results = originalData.AsQueryable();
            return results;
        }
    }
}


 public DataTable SelGrupTrInfo(string strJsonParam,string strUserId)
        {
            StringBuilder sbSql = new StringBuilder();
            ArrayList aryList = new ArrayList();
            DataTable dt = new DataTable();
            OrderGrupTrSearchModel dataModel = new OrderGrupTrSearchModel();
            if (!string.IsNullOrWhiteSpace(strJsonParam))
            {
                var mStream = new MemoryStream(Encoding.UTF8.GetBytes(strJsonParam));
                var serializer = new DataContractJsonSerializer(typeof(OrderGrupTrSearchModel));
                dataModel = (OrderGrupTrSearchModel)serializer.ReadObject(mStream);
                string strChkDeptCd = "";
                string strChkCompCd = "";
                sbSql.AppendLine("  SELECT DEPT_CD, COMP_CD FROM TREMP WHERE EMP_CD = @iUSR_ID   ");
                aryList.Add(new ListItem("@iUSR_ID", strUserId));
                DataTable dtTremp = this.objDB.OpenDataTable(sbSql.ToString(), aryList);
                if (dtTremp != null && dtTremp.Rows.Count > 0)
                {
                    strChkDeptCd = dtTremp.Rows[0]["DEPT_CD"].ToString();
                    strChkCompCd = dtTremp.Rows[0]["COMP_CD"].ToString();
                }
                sbSql = new StringBuilder();
                aryList = new ArrayList();
                sbSql.AppendLine("  SELECT    ");
                sbSql.AppendLine("  ISNULL(T.ACCT_NOP, '') AS ACCT_NOP,    ");
                sbSql.AppendLine("  ISNULL(T.PORD_NO, '') AS PORD_NO,    ");
                sbSql.AppendLine("  ISNULL(T.PORD_DT, '') AS PORD_DT,    ");
                sbSql.AppendLine("  ISNULL(T.VOID_FG, '') AS VOID_FG,    ");
                sbSql.AppendLine("  ISNULL(T.OPEMP_CD, '') AS OPEMP_CD,    ");
                sbSql.AppendLine("  ISNULL(T.SUB_DR, '') AS SUB_DR,    ");
                sbSql.AppendLine("  ISNULL(T.SUB_DR1, '') AS SUB_DR1  ");
                sbSql.AppendLine("  FROM TRPORD T    ");
                sbSql.AppendLine("  LEFT JOIN TRPORDD R ON R.PORD_NO = T.PORD_NO    ");
                sbSql.AppendLine("  AND R.ACCT_NOP = T.ACCT_NOP WHERE 1=1    ");
                if (!string.IsNullOrWhiteSpace(dataModel.LS_PORD_NO))//請款單號
                {
                    sbSql.AppendLine("  AND T.PORD_NO = @LS_PORD_NO   ");
                    aryList.Add(new ListItem("@LS_PORD_NO", dataModel.LS_PORD_NO));
                }
                if (!string.IsNullOrWhiteSpace(dataModel.LS_ACCT_NOP))//應付帳號
                {
                    sbSql.AppendLine("  AND T.ACCT_NOP = @LS_ACCT_NOP   ");
                    aryList.Add(new ListItem("@LS_ACCT_NOP", dataModel.LS_ACCT_NOP));
                }
                if (dataModel.LS_ACNT_DTB != "1900/01/01" || dataModel.LS_ACNT_DTE != "9999/12/31")//請款期間
                {
                    sbSql.AppendLine("  AND T.PORD_DT BETWEEN @LS_ACNT_DTB AND @LS_ACNT_DTE  ");
                    aryList.Add(new ListItem("@LS_ACNT_DTB", dataModel.LS_ACNT_DTB));
                    aryList.Add(new ListItem("@LS_ACNT_DTE", dataModel.LS_ACNT_DTE));
                }
                if (dataModel.LS_VOID_FG != "ON")
                {
                    sbSql.AppendLine("  AND T.VOID_FG = 0    ");
                }
                if (!odrFunctionsService.Chk_Permission("L_BJ6.asp", strUserId))
                {
                    sbSql.AppendLine("  AND T.EMP_CD = @iUSR_ID   ");
                    aryList.Add(new ListItem("@iUSR_ID", strUserId));
                }
                if (!odrFunctionsService.Chk_Permission("L_BJ7.asp", strUserId))
                {
                    sbSql.AppendLine("  AND T.EMP_CD IN (SELECT EMP_CD FROM TREMP WHERE DEPT_CD IN ('" + strChkDeptCd + "'))    ");
                }
                if (!odrFunctionsService.Chk_Permission("L_BJ8.asp", strUserId))
                {
                    sbSql.AppendLine("  AND t.EMP_CD IN (SELECT EMP_CD FROM TREMP WHERE COMP_CD = '" + strChkCompCd + "')    ");
                }
                sbSql.AppendLine("  GROUP BY T.ACCT_NOP, T.PORD_NO, T.PORD_DT, T.VOID_FG, T.OPEMP_CD, T.SUB_DR, T.SUB_DR1 ORDER BY T.PORD_NO    ");
                dt = this.objDB.OpenDataTable(sbSql.ToString(), aryList);
            }
            return dt;
        }


猜你喜欢

转载自blog.csdn.net/qq_33556442/article/details/78257508
今日推荐