页面
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="搜尋紀錄" οnclick="funLoadSearchData();"><i class="fa fa-search"></i> 搜尋</button>
<button class="btn btn-default btn-primary" οnclick="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;
}