日韩欧美人妻无码精品白浆,夜夜嗨AV免费入口,国产欧美官网在线看,高校回应聋哑女生因长相完美被质疑

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

重構(gòu)《Repeater控件動態(tài)變更列(Header,Item和Foot)信息》

admin
2017年11月16日 23:53 本文熱度 7697

早上有分享《Repeater控件動態(tài)變更列(Header,Item和Foot)信息》 ,是動態(tài)變更一些列的內(nèi)容。

雖然它算不上是完全動態(tài)化,但它已經(jīng)達(dá)到初期想要的效果。如果你稍有仔細(xì),也能輕易把它弄出來?,F(xiàn)另開一篇,Insus.NET不是重新另外寫,而是想重構(gòu)cs的代碼,因?yàn)榍耙黄拇a雖然簡單,但代碼冗余過多。

重構(gòu)開始:
首先把這五個(gè)變量刪除,因?yàn)樵谥貥?gòu)過程中,已經(jīng)不需要這五個(gè)變量了。

//宣告5個(gè)變量,將用來存儲那5個(gè)月份每個(gè)部分的數(shù)量
decimal c1, c2, c3, c4, c5;


接下來需要改動的是宣告一個(gè)常量,很多地方使用到它:

const int dynamicColumns = 5; 


把程序中的下面這句

objPrintLog.Months = 5; //最近連續(xù)5個(gè)月份

改為:

 objPrintLog.Months = dynamicColumns;


也就是說,使用常量的變量去替代舊代碼的"5"。

接下來,我們重構(gòu)Repwater控件的Header的代碼,為了好對比,Insus.NET把上一篇對應(yīng)的圖片引用在這里:

 

 重構(gòu)如下:

復(fù)制代碼
 protected void RepeaterLFMS_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
            if (e.Item.FindControl("LabelH0") != null
                && e.Item.FindControl("LabelH1") != null
                && e.Item.FindControl("LabelH2") != null
                && e.Item.FindControl("LabelH3") != null
                && e.Item.FindControl("LabelH4") != null
                && e.Item.FindControl("LabelH5") != null)
            {
                for (int i = 0; i <= dynamicColumns; i++)
                {
                    Label lh = (Label)e.Item.FindControl("LabelH" + i.ToString());
                    lh.Text = objDt.Columns[i].ColumnName;
                }
            }
        }
復(fù)制代碼


只要一對比,就可以明了看到變代碼中的代碼。下面是Repwater控件Item 部分:

舊代碼重構(gòu)之后的代碼,第16行代碼,是判斷第一列,因?yàn)樗亲址?,因此單?dú)排除。第23行,使用ViewState來替代舊程序的5個(gè)變量。

復(fù)制代碼
 1  if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
 2         {
 3             DataRowView drv = (DataRowView)e.Item.DataItem;
 4             if (e.Item.FindControl("LabelI0") != null
 5                 && e.Item.FindControl("LabelI1") != null
 6                 && e.Item.FindControl("LabelI2") != null
 7                 && e.Item.FindControl("LabelI3") != null
 8                 && e.Item.FindControl("LabelI4") != null
 9                 && e.Item.FindControl("LabelI5") != null)
10             {
11 
12                 for (int j = 0; j <= dynamicColumns; j++)
13                 {
14                     Label li = (Label)e.Item.FindControl("LabelI" + j.ToString());
15 
16                     if (j == 0) 
17                         li.Text = drv[objDt.Columns[0].ColumnName].ToString();
18                     else
19                     {
20                         decimal v = string.IsNullOrEmpty(drv[objDt.Columns[j].ColumnName].ToString()) ? 0 : Convert.ToDecimal(drv[objDt.Columns[j].ColumnName].ToString());
21                         li.Text = v.ToString();
22 
23                         ViewState["c" + j.ToString()] = ViewState["c" + j.ToString()] == null ? 0 : Convert.ToDecimal(ViewState["c" + j.ToString()]) + v;
24                     }
25                 }
26             }
27         }
復(fù)制代碼


最后是Foot的重構(gòu):

Foot重構(gòu)好的代碼,第14行是判斷是否為第一列,第17行,是把ViewState的值賦給Label。

復(fù)制代碼
 1  if (e.Item.ItemType == ListItemType.Footer)
 2         {
 3             if (e.Item.FindControl("LabelF0") != null
 4                 && e.Item.FindControl("LabelF1") != null
 5                 && e.Item.FindControl("LabelF2") != null
 6                 && e.Item.FindControl("LabelF3") != null
 7                 && e.Item.FindControl("LabelF4") != null
 8                 && e.Item.FindControl("LabelF5") != null)
 9             {
10                 for (int k = 0; k <= dynamicColumns; k++)
11                 {
12                     Label lf = (Label)e.Item.FindControl("LabelF" + k.ToString());
13 
14                     if (k == 0)
15                         lf.Text = "Total";
16                     else
17                         lf.Text = ViewState["c" + k.ToString()] == null ? "0" : ViewState["c" + k.ToString()].ToString();
18                 }
19             }
20         }
21     }
復(fù)制代碼


 重構(gòu)是在程序功能要求不變的情況之下,減少冗余的代碼。


該文章在 2017/11/16 23:53:29 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved