datagrid動態生成列
阿新 • • 發佈:2019-02-02
Oracle將資料進行行轉列:http://blog.csdn.net/u013533810/article/details/37956195
1、程式中的條件引數
string WhereStr = context.Request["WhereStr"].ToString(); string ColumnsStr = context.Request["ColumnsStr"].ToString(); PrisonPM.Model.Row_To_Col model = new Model.Row_To_Col(); model.tabname = "VW_DAYRPT_STDTSK_R"; if (string.IsNullOrEmpty(ColumnsStr)) { model.group_col = "DPTKEY"; } else { model.group_col = "DPTKEY," + ColumnsStr; } model.column_col = "DAYRPTDATE"; model.value_col = "PRODTIME"; model.Aggregate_func = "Sum"; model.colorder = "DAYRPTDATE asc"; model.roworder = "DPTKEY asc"; model.when_value_null = ""; model.where_str = WhereStr; model.rowcount_str = "合計"; PrisonPM.BLL.PublicReport BLL = new BLL.PublicReport(); DataSet ds = BLL.Sp_BookStdtskReport(model); strR=JSONhelper.GetAsyncDataGridData(ds.Tables[0]);
2、程式中呼叫Oracle中的函式
3、將資料轉換成JSON型別public DataSet Sp_BookStdtskReport(PrisonPM.Model.Row_To_Col model) { OracleParameter Cursor = new OracleParameter(); Cursor.ParameterName = "cur"; Cursor.OracleType = OracleType.Cursor; Cursor.Direction = System.Data.ParameterDirection.Output; OracleParameter[] parameters = { new OracleParameter("tabname",OracleType.VarChar,200), new OracleParameter("group_col",OracleType.VarChar,2000), new OracleParameter("column_col",OracleType.VarChar,200), new OracleParameter("value_col",OracleType.VarChar,200), new OracleParameter("Aggregate_func",OracleType.VarChar,200), new OracleParameter("colorder",OracleType.VarChar,200), new OracleParameter("roworder",OracleType.VarChar,200), new OracleParameter("when_value_null",OracleType.VarChar,200), new OracleParameter("where_str",OracleType.VarChar,2000), new OracleParameter("rowcount_str",OracleType.VarChar,200), Cursor }; parameters[0].Value = model.tabname; parameters[1].Value = model.group_col; parameters[2].Value = model.column_col; parameters[3].Value = model.value_col; parameters[4].Value = model.Aggregate_func; parameters[5].Value = model.colorder; parameters[6].Value = model.roworder; parameters[7].Value = model.when_value_null; parameters[8].Value = model.where_str; parameters[9].Value = model.rowcount_str; return PrisonPM.DBUtility.DbHelperOra.RunProcedure("PKG_STM_GETDATA_TABLE.Sp_Row_To_Col", parameters, "report"); }
4、前臺介面佈局public static string GetAsyncDataGridData(DataTable dt) { StringBuilder sb = new StringBuilder(); //生成資料JSON JavaScriptSerializer jss = new JavaScriptSerializer(); System.Collections.ArrayList dic = new System.Collections.ArrayList(); foreach (DataRow dr in dt.Rows) { System.Collections.Generic.Dictionary<string, object> drow = new System.Collections.Generic.Dictionary<string, object>(); foreach (DataColumn dc in dt.Columns) { drow.Add(dc.ColumnName, dr[dc.ColumnName]); } dic.Add(drow); } //生成列名JSON sb.Append("["); foreach (DataColumn dc in dt.Columns) { sb.Append("{"); sb.Append(string.Format("\"field\":\"{0}\",",dc.ColumnName)); sb.Append(string.Format("\"title\":\"{0}\",", dc.ColumnName)); sb.Append(string.Format("\"width\":\"{0}\",", 80)); sb.Append(string.Format("\"align\":\"{0}\"","center")); sb.Append("},"); } if (sb.ToString().EndsWith(",")) { sb.Remove(sb.Length - 1, 1); } sb.Append("]"); return "{\"total\":" + dt.Rows.Count + ",\"rows\":" + jss.Serialize(dic) +",\"columns\":"+sb.ToString()+ "}"; }
<script type="text/javascript" language="javascript">
$(function () {
$('#Combo_DPT').combobox({
url: '../PublicData/GetWorkShopData.aspx',
valueField: 'DPTKEY',
textField: 'DPTNAME'
});
$('#tt').datagrid({
width: 600,
height: 600,
fit: true,
toolbar: '#toolbar',
rownumbers: true, //行號
singleSelect: true, //單行選取
pagination: false, //顯示分頁
columns: [[]]
});
$('#txt_Colomns').combobox({
url: "../Handler/STM/Stm_Menu.ashx?flag=txt_Colomns",
multiple: true,
valueField: 'COLUMN_NAME',
textField: 'COLUMN_NAME'
});
});
function WhereStr() {
var WhereStr = " Where 1=1";
if ($("#Combo_DPT").combobox("getValue")) {
WhereStr = WhereStr + " and DPTKEY=" + $("#Combo_DPT").combobox("getValue");
}
if ($("#txt_LABOURCODE").val()) {
WhereStr = WhereStr + " and LABOURCODE like'%" + $("#txt_LABOURCODE").val() + "%'";
}
if ($("#txt_LABOURNAME").val()) {
WhereStr = WhereStr + " and LABOURNAME like'%" + $("#txt_LABOURNAME").val() + "%'";
}
if ($("#txt_PARTMCODE").val()) {
WhereStr = WhereStr + " and PARTMCODE like'%" + $("#txt_PARTMCODE").val() + "%'";
}
return WhereStr;
}
function Fn_Search() {
var ColumnsName = $("#txt_Colomns").combobox("getValues");
var ColumnsStr = JSON.stringify(ColumnsName);
ColumnsStr = ColumnsStr.substring(1, ColumnsStr.length - 1).replace(/\"/g, ""); ;
$.ajax({
url: '../Handler/STM/Stm_Menu.ashx?flag=ssssss&rand=' + Math.random(),
type: "POST",
dataType: "JSON", //可以為Json
data: { WhereStr: WhereStr(), ColumnsStr: ColumnsStr },
success: function (data) {
$('#tt').datagrid({ columns: [data.columns] }).datagrid("loadData", data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//window.parent.frameReturnByMes("提交失敗2");
return;
}
});
}
</script>
</head>
<body>
<table id="tt">
</table>
<div id="toolbar">
所在車間:<input id="Combo_DPT" class="easyui-combobox" />
客戶款號:<input id="txt_PARTMCODE" class="textbox" />
員工編號:<input id="txt_LABOURCODE" class="textbox" />
員工姓名:<input id="txt_LABOURNAME" class="textbox" />
顯示欄位:<input id="txt_Colomns" class="easyui-combobox" />
<a href="#" class="easyui-linkbutton" iconcls="icon-search" onclick="Fn_Search()"
plain="false">查詢</a>
</div>
</body>