1、首先配置web.config
<add key="SUANLI_BASE" value="E:\算例"/> //本地E盤下建立一個檔案夾
2、建立一個實體類,用作對象吧
public class T_ZAIHEYUCE{
private string _x1;
public string X1
{
get { return _x1; }
set { _x1 = value; }
}
private string _x2;
public string X2
{
get { return _x2; }
set { _x2 = value; }
}
private string _x3;
public string X3
{
get { return _x3; }
set { _x3 = value; }
}
private string _x4;
public string X4
{
get { return _x4; }
set { _x4 = value; }
}
private string _x5;
public string X5
{
get { return _x5; }
set { _x5 = value; }
}
}
3、建立一般處理程式ashx,繼承自AjaxHandleBase:
public class ZaiHeYuCe : AjaxHandleBase{
public override void BeforeProcess(HttpContext context)
{
AddMap("getzhtxt", GetZhtxt);
}
private void GetZhtxt(HttpContext context){
decimal? id = QueryDecimal(context, "id");
Work.Logic.T_SUANLI bll = new Work.Logic.T_SUANLI();
Work.Model.T_SUANLI model = bll.GetEntity(id); //得到id為XX的算例
//此處先建立兩個第二步所建立的執行個體類,友善後邊用
List<Work.Model.T_ZAIHEYUCE> zhlist = new List<Work.Model.T_ZAIHEYUCE>();
List<Work.Model.T_ZAIHEYUCE> zhyclist = new List<Work.Model.T_ZAIHEYUCE>();
//擷取web配置裡的位址
string suanliBasePath = ConfigurationManager.AppSettings["SUANLI_BASE"];
//擷取檔案夾下根據年份和case_加上此算例ID所生成的位址
string slpath = Path.Combine(suanliBasePath, DateTime.Now.Year.ToString(), "case_" + model.L_ID);
//擷取此算例下的Solver檔案夾
string solverpath = Path.Combine(slpath, "Solver");
//判斷前台往資料庫裡添加的檔案是否存在,此處我有四個檔案需同時上傳
if (File.Exists(model.F_ZHTXT_KEY) && File.Exists(model.F_ZHTRA_KEY) && File.Exists(model.F_WLTXT_KEY) && File.Exists(model.F_WLTRA_KEY)){
//擷取Solver檔案下載下傳荷預測檔案裡綜合類和實體類檔案下的data_lo.txt。
//注意:綜合類包括F_ZHTXT_KEY和F_ZHTRA_KEY,實體類包括model.F_WLTXT_KEY和model.F_WLTRA_KEY且這兩類檔案的data_log.txt都是149行3列分别是節點、textloss、trainloss
string zhpath = Path.Combine(solverpath, "載荷預測", "zonghe", "data_log.txt");
//讀取綜合檔案下的data_log.txt
string[] zhstrs = System.IO.File.ReadAllLines(zhpath);
//同理實體檔案
string wlpath = Path.Combine(solverpath, "載荷預測", "wuli", "data_log.txt");
string[] wlstrs = System.IO.File.ReadAllLines(wlpath);
//上文提到兩個data_log的行列相等,
if (zhstrs.Length == wlstrs.Length)
{
//周遊綜合類的txt,并添加到zhlist集合中,文本是用\t分隔的,是以
for (int i = 1; i < zhstrs.Length; i++)
{
var strs = zhstrs[i];
var s = strs.Substring(0, strs.Length - 1).Split("\t".ToCharArray());
zhlist.Add(new Work.Model.T_ZAIHEYUCE
{
X1 = s[0],
X2 = s[1],
X3 = s[s.Length - 1]
});
}
//周遊實體下的txt若zhlist集合中的X1節點等于i則指派
注意:此處沒有指派s[0],是因為它倆在表格裡共用同一節點
for (int i = 1; i < wlstrs.Length; i++)
{
var strs = wlstrs[i];
var s = strs.Substring(0, strs.Length - 1).Split("\t".ToCharArray());
var x1 = zhlist.Where(a => a.X1 == i.ToString()).FirstOrDefault().X1;
var x2 = zhlist.Where(a => a.X1 == i.ToString() && a.X2 != null).FirstOrDefault().X2;
var x3 = zhlist.Where(a => a.X1 == i.ToString() && a.X3 != null).FirstOrDefault().X3;
zhyclist.Add(new Work.Model.T_ZAIHEYUCE
{
X1 = x1,
X2 = x2,
X3 = x3,
X4 = s[1],
X5 = s[2]
});
}
}
}
//傳回此集合的json格式,共有149條資料
string json = JsonHelper.ToJson(zhyclist);
context.Response.Write(json);
}
}
4、前台aspx:
<script type="text/javascript">
var url = "/Pages/Youhua/Data/ZaiHeYuCe.ashx?req_fun=";
$(function () {
loadLine();
//随浏覽器視窗調整
$(window).resize(function () {
loadLine();
});
});
//或者在此處用colums寫多行表頭也可以
function loadLine()
{
$('#tabList').datagrid({
url:url + "getzhtxt&id="+<%=SLID%>,
//columns: [
// [{ "title": " " },
// { "title": "數字孿生", "colspan": 2 },
// { "title": "實體", "colspan": 2 }],
// [
// { "field": "X1", "title": "節點" },
// { "field": "X2", "title": "test-loss" },
// { "field": "X3", "title": "train-loss" },
// { "field": "X4", "title": "test-loss" },
// { "field": "X5", "title": "train-loss" }
// ]
//]
});
}
</script>
<table id="tabList" toolbar="" singleselect="true" rownumbers="true" striped="true" remotesort="false" class="easyui-datagrid" fit="true">
<thead>
<tr>
<th align="center"></th>
<th align="center" colspan="2">數字孿生</th>
<th align="center" colspan="2">實體</th>
</tr>
<tr>
<th align="center" data-options="sortable:true,field:'X1'">節點</th>
<th align="center" data-options="sortable:true,field:'X2'">test-loss</th>
<th align="center" data-options="sortable:true,field:'X3'">train-loss</th>
<th align="center" data-options="sortable:true,field:'X4'">test-loss</th>
<th align="center" data-options="sortable:true,field:'X5'">train-loss</th>
</tr>
</thead>
</table>
5、部分圖像
