天天看點

讀取兩個txt檔案,并将資料合并顯示到一個easyui-datagrid表格中

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、部分圖像

讀取兩個txt檔案,并将資料合并顯示到一個easyui-datagrid表格中