通过反射机制控制前台的数据项的显示和隐藏

本文介绍了一种利用反射机制动态判断并控制页面元素显示的方法,以减少重复代码,提高开发效率。具体实现是在PreRender事件中遍历页面上的所有属性,只针对字符串类型的属性进行检查,若属性值为空,则隐藏对应的Panel。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    有个需求,笔者比较挠头,要求如果前台有数据项的话 这一行就显示,没有的话,就隐藏。

    如果要是一个一个判断,并通过Panel的Visible属性设置的话,就得写25次,难道没有别的办法了吗?当然有,就用反射机制就可以。

    

ContractedBlock.gifExpandedBlockStart.gifCode
protected void Page_PreRender(object sender, EventArgs e)
    {
        PropertyInfo[] pi 
= this.Page.GetType().GetProperties();
        
foreach (PropertyInfo prop in pi)
        {
            
if (prop != null && prop.PropertyType == typeof(string))
            {
                
string val = (string)prop.GetValue(thisnull);
                
if (string.IsNullOrEmpty(val))
                {
                    
string pnName = "pn_" + prop.Name;
                    
if (Page.FindControl(pnName) != null)
                    {
                        Page.FindControl(pnName).Visible 
= false;
                    }
                }
            }
        }
    }
    需要注意的是:
    第一,应当放在PreRender事件中;
    第二,必须有一个判断,就是必须属性器是字符串类型;
    第三,Panel的ID命名有一个约定,就是“pn_”开头,后面跟属性器的名字。

 

转载于:https://www.cnblogs.com/tyrael007/archive/2009/04/24/1442752.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值