<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Repeater控件動態變更列(Header,Item和Foot)信息(重構cs)

        來源:懂視網 責編:小采 時間:2020-11-27 22:41:24
        文檔

        Repeater控件動態變更列(Header,Item和Foot)信息(重構cs)

        Repeater控件動態變更列(Header,Item和Foot)信息(重構cs):早上有分享《Repeater控件動態變更列(Header,Item和Foot)信息》 ,是動態變更一些列的內容。 雖然它算不上是完全動態化,但它已經達到初期想要的效果。如果你稍有仔細,也能輕易把它弄出來。現另開一篇,Insus.NET不是重新另外寫,而是想重構cs的代碼,因為
        推薦度:
        導讀Repeater控件動態變更列(Header,Item和Foot)信息(重構cs):早上有分享《Repeater控件動態變更列(Header,Item和Foot)信息》 ,是動態變更一些列的內容。 雖然它算不上是完全動態化,但它已經達到初期想要的效果。如果你稍有仔細,也能輕易把它弄出來。現另開一篇,Insus.NET不是重新另外寫,而是想重構cs的代碼,因為

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

        雖然它算不上是完全動態化,但它已經達到初期想要的效果。如果你稍有仔細,也能輕易把它弄出來。現另開一篇,Insus.NET不是重新另外寫,而是想重構cs的代碼,因為前一篇的代碼雖然簡單,但代碼冗余過多。

        重構開始:
        首先把這五個變量刪除,因為在重構過程中,已經不需要這五個變量了。
        代碼如下:
        //宣告5個變量,將用來存儲那5個月份每個部分的數量
        decimal c1, c2, c3, c4, c5;

        接下來需要改動的是宣告一個常量,很多地方使用到它:
        代碼如下:
        const int dynamicColumns = 5;

        把程序中的下面這句
        代碼如下:
        objPrintLog.Months = 5; //最近連續5個月份

        改為:
        代碼如下:
        objPrintLog.Months = dynamicColumns;

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

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

         

        重構如下:
        代碼如下:
        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;
        }
        }
        }

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

        舊代碼重構之后的代碼,第16行代碼,是判斷第一列,因為它是字符串,因此單獨排除。第23行,使用ViewState來替代舊程序的5個變量。
        代碼如下:
        if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
        {
        DataRowView drv = (DataRowView)e.Item.DataItem;
        if (e.Item.FindControl("LabelI0") != null
        && e.Item.FindControl("LabelI1") != null
        && e.Item.FindControl("LabelI2") != null
        && e.Item.FindControl("LabelI3") != null
        && e.Item.FindControl("LabelI4") != null
        && e.Item.FindControl("LabelI5") != null)
        {

        for (int j = 0; j <= dynamicColumns; j++)
        {
        Label li = (Label)e.Item.FindControl("LabelI" + j.ToString());

        if (j == 0)
        li.Text = drv[objDt.Columns[0].ColumnName].ToString();
        else
        {
        decimal v = string.IsNullOrEmpty(drv[objDt.Columns[j].ColumnName].ToString()) ? 0 : Convert.ToDecimal(drv[objDt.Columns[j].ColumnName].ToString());
        li.Text = v.ToString();

        ViewState["c" + j.ToString()] = ViewState["c" + j.ToString()] == null ? 0 : Convert.ToDecimal(ViewState["c" + j.ToString()]) + v;
        }
        }
        }
        }

        最后是Foot的重構:

        Foot重構好的代碼,第14行是判斷是否為第一列,第17行,是把ViewState的值賦給Label。
        代碼如下:
        if (e.Item.ItemType == ListItemType.Footer)
        {
        if (e.Item.FindControl("LabelF0") != null
        && e.Item.FindControl("LabelF1") != null
        && e.Item.FindControl("LabelF2") != null
        && e.Item.FindControl("LabelF3") != null
        && e.Item.FindControl("LabelF4") != null
        && e.Item.FindControl("LabelF5") != null)
        {
        for (int k = 0; k <= dynamicColumns; k++)
        {
        Label lf = (Label)e.Item.FindControl("LabelF" + k.ToString());

        if (k == 0)
        lf.Text = "Total";
        else
        lf.Text = ViewState["c" + k.ToString()] == null ? "0" : ViewState["c" + k.ToString()].ToString();
        }
        }
        }
        }

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

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Repeater控件動態變更列(Header,Item和Foot)信息(重構cs)

        Repeater控件動態變更列(Header,Item和Foot)信息(重構cs):早上有分享《Repeater控件動態變更列(Header,Item和Foot)信息》 ,是動態變更一些列的內容。 雖然它算不上是完全動態化,但它已經達到初期想要的效果。如果你稍有仔細,也能輕易把它弄出來。現另開一篇,Insus.NET不是重新另外寫,而是想重構cs的代碼,因為
        推薦度:
        標簽: 信息 item 重構
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久99精品视免费看| 暖暖免费高清日本中文| 亚洲理论片中文字幕电影| 中文字幕影片免费在线观看| 国产亚洲蜜芽精品久久| 久久精品国产亚洲香蕉| 女人18毛片特级一级免费视频| 暖暖免费中文在线日本| 亚洲成人精品久久| 国产精品免费视频一区| 日本免费久久久久久久网站| 亚洲国产一区二区三区在线观看| 中文字幕亚洲无线码a| 台湾一级毛片永久免费| 亚洲精品视频免费| 亚洲人成www在线播放| 国产亚洲欧洲精品| 日韩亚洲国产综合久久久| 久久久久国产精品免费网站| 久久精品国产亚洲av品善| 亚洲综合久久久久久中文字幕| 亚洲国产香蕉人人爽成AV片久久| 波多野结衣免费在线| 99久久99这里只有免费的精品| 亚洲国产精华液2020| 亚洲成年人免费网站| 精品国产人成亚洲区| 国产日产成人免费视频在线观看| 4399影视免费观看高清直播| 国产又黄又爽又大的免费视频| 亚洲啪AV永久无码精品放毛片| 亚洲视频日韩视频| 久久99国产亚洲高清观看首页| 亚洲AV无码专区日韩| 永久免费av无码网站韩国毛片| 免费毛片a线观看| 成人免费乱码大片A毛片| 免费国产va视频永久在线观看| 亚洲小说图区综合在线| 亚洲制服丝袜在线播放| 亚洲综合精品香蕉久久网97|