亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Repeater控件動態變更列的示例分析

發布時間:2021-10-18 09:44:38 來源:億速云 閱讀:126 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Repeater控件動態變更列的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。


重構開始:
首先把這五個變量刪除,因為在重構過程中,已經不需要這五個變量了。

復制代碼 代碼如下:


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


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

復制代碼 代碼如下:


const int dynamicColumns = 5;


把程序中的下面這句

復制代碼 代碼如下:


objPrintLog.Months = 5; //最近連續5個月份


改為:

復制代碼 代碼如下:


objPrintLog.Months = dynamicColumns;


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

接下來,我們重構Repwater控件的Header的代碼,為了好對比,Insus.NET把上一篇對應的圖片引用在這里:
Repeater控件動態變更列的示例分析

 Repeater控件動態變更列的示例分析

重構如下:

復制代碼 代碼如下:


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 部分:
Repeater控件動態變更列的示例分析

舊代碼重構之后的代碼,第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的重構:
Repeater控件動態變更列的示例分析

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();
}
}
}
}


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

關于“Repeater控件動態變更列的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛川县| 香格里拉县| 柳州市| 昆明市| 麦盖提县| 灵石县| 从江县| 夏邑县| 旅游| 罗田县| 乐亭县| 宝应县| 昭觉县| 广平县| 辽阳市| 上犹县| 安吉县| 邹平县| 洱源县| 城步| 长治市| 广灵县| 阜新| 望都县| 临泽县| 府谷县| 舞钢市| 西青区| 正安县| 姜堰市| 贺兰县| 祥云县| 临泉县| 前郭尔| 南雄市| 平度市| 施甸县| 舒兰市| 沅江市| 布拖县| 彝良县|