• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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控件動態(tài)變更列(Header,Item和Foot)信息(重構(gòu)cs)

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

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

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

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

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

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

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

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

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

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

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

     

    重構(gòu)如下:
    代碼如下:
    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 部分:

    舊代碼重構(gòu)之后的代碼,第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的重構(gòu):

    Foot重構(gòu)好的代碼,第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();
    }
    }
    }
    }

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

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

    文檔

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

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久精品一区二区三区不卡| 精品水蜜桃久久久久久久| 91精品国产91久久久久久蜜臀| 日韩精品一区二区午夜成人版 | 国产精品一区二区三区99| 国产午夜精品一区二区三区漫画| 久久久久久噜噜精品免费直播| 中文字幕精品一区影音先锋| 精品乱码一区二区三区四区| 四虎影视永久在线精品| 99久久国产主播综合精品| 国产成人精品高清在线观看99| 日韩精品久久久肉伦网站| 亚洲精品视频在线看| 欧美成人精品高清在线播放| 国产精品综合专区中文字幕免费播放| 国产精品一区在线播放| 99精品无人区乱码在线观看 | 国产乱码伦精品一区二区三区麻豆 | 99热都是精品久久久久久| 国产精品久久成人影院| 成人精品视频一区二区三区| 国语精品一区二区三区| 少妇精品无码一区二区三区| 中文字幕精品视频在线| 亚洲精品国产自在久久| 色婷婷噜噜久久国产精品12p| 精品欧美一区二区在线观看| 国产三级精品三级在线观看| 国自产精品手机在线观看视| 惠民福利中文字幕人妻无码乱精品 | 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 99久久精品无码一区二区毛片| 国产精品成人va在线观看| .精品久久久麻豆国产精品| 99精品久久精品一区二区| 国产精品久久亚洲不卡动漫| 精品国产福利久久久| 久久精品人人做人人爽电影| 免费精品99久久国产综合精品| 91久久福利国产成人精品|