手机版

中继器控件动态变更列(标题,项目和脚)信息(重构cs)

时间:2021-11-22 来源:互联网 编辑:宝哥软件园 浏览:

早上有分享《Repeater控件动态变更列(Header,Item和Foot)信息》 ,是动态变更一些列的内容。虽然它算不上是完全动态化,但它已经达到初期想要的效果。如果你稍有仔细,也能轻易把它弄出来。现另开一篇因苏斯。网不是重新另外写,而是想重构铯的代码,因为前一篇的代码虽然简单,但代码冗余过多。重构开始:首先把这五个变量删除,因为在重构过程中,已经不需要这五个变量了。复制代码代码如下://宣告5个变量,将用来存储那5个月份每个部分的数量十进制c1、c2、c3、c4、C5;接下来需要改动的是宣告一个常量,很多地方使用到它:复制代码代码如下:常量内部动态列=5;把程序中的下面这句复制代码代码如下:对象打印日志.月=5;//最近连续5个月份改为:复制代码代码如下:对象打印日志.月份=动态月份;也就是说,使用常量的变量去替代旧代码的'5'。接下来,我们重构Repwater控件的页眉的代码,为了好对比因苏斯。网把上一篇对应的图片引用在这里

重构如下:复制代码代码如下:受保护的void RepeaterLFMS _ ItemDataBond(对象发送方,repeateritemEventargs e){ if(e . item。项目类型==列表项目类型.标题){ if(e . item。查找控件('标签h0 ')!=空项目。查找控件('标签h1 ')!=空e.Item.FindControl('LabelH2 ')!=空e.Item.FindControl('LabelH3 ')!=空e.Item.FindControl('LabelH4 ')!=空e.Item.FindControl('LabelH5 ')!=null){ for(int I=0;i=dynamicColumnsI){标签LH=(标签)e . item。查找控件('标签LH ' I . ToString());左文本=对象.列[i].列名} } }只要一对比,就可以明了看到变代码中的代码。下面是Repwater控件项目部分

旧代码重构之后的代码,第16行代码,是判断第一列,因为它是字符串,因此单独排除。第23行,使用视图状态来替代旧程序的5个变量。复制代码代码如下: if(e .项。项目类型==列表项目类型.交替项目。项目类型==列表项目类型.item){ DataRowView drv=(DataRowView)e . item。DataItemif (e.Item.FindControl('LabelI0 ')!=空项目。查找控件(' labeli 1 ')!=空Item.FindControl('LabelI2 ')!=空项目。查找控件(' labeliy ')!=空e.Item.FindControl('LabelI4 ')!=空e.Item.FindControl('LabelI5 ')!=null){ for(int j=0;j=dynamicColumnsj){标签Li=(标签)e . item。查找控件(' Label Li ' j . ToString());if (j==0) li .Text=drv[objDt .列[0]。列名]。ToString();else {十进制v=字符串.IsNullOrEmpty(drv[objDt .列[j].列名]。ToString())?0 :转换ToDecimal(drv[objDt .列[j].列名]。ToString());李text=v . ToString();ViewState[' c ' j . ToString()]=ViewState[' c ' j . ToString()]==null?0 :转换. ToDecimal(ViewState[' c ' j . ToString()])v;} } } }最后是脚的重构

脚重构好的代码,第14行是判断是否为第一列,第17行,是把视图状态的值赋给标签。复制代码代码如下: if(e .项。项目类型==列表项目类型.页脚){ if(e . item。查找控件(' labelf 0 ')!=空项目。查找控件('标签f1 ')!=空项目。查找控件('标签F2 ')!=空项目。查找控件(“标签F3”)!=空项目。查找控件('标签F4 ')!=空项目。查找控件('标签F5 ')!=null){ for(int k=0;k=dynamicColumnsk){ Label lf=(Label)e . item。查找控件(' Label lf ' k . ToString());if (k==0) lf .文本="总计";否则text=ViewState[' c ' k . ToString()]==null?0 ' : ViewState[' c ' k . ToString()].ToString();} } } }重构是在程序功能要求不变的情况之下,减少冗余的代码。

版权声明:中继器控件动态变更列(标题,项目和脚)信息(重构cs)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。