如何按一定规律对多个WEB控件赋值(方法)

1 篇文章 0 订阅
1 篇文章 0 订阅

       在下最近在写代码的时候遇到的问题,就是已经在表格中插入了一些类如:label一类的代码。在后台程序的位置想用循环通过提取数据库数据对相应位置的Lable赋值,结果无法在循环中按一定的规律表达出相应控件名(ID).后多方求解后在CSDN找到一位仁兄问过此问题,结果解决问题的链接打不开,找不到原文了。后通过度娘找到同仁问到同一问题,有好心人解答。看后懂了,想把该方法做个新手笔记,同时也希望有同样困难的朋友能得到这个解决方法。

百度知道里问到:

this.CR2.Text = tempC[j, 2];
                this.CR3.Text = tempC[j, 3];
                ...
                this.CR10.Text = tempC[j, 10];
上面是最初的方法, 这个是能实现的,现在我想用循环的方法实现啊!为什么我查了多少方法但是都报出 “未将对象引用设置到对象的实例” 的错误呢?
比如:
        for (k = 2; k <= 10; k++)
                {
                    (this.FindControl("CR", i) as Label).Text = tempC[j, k];
                }
出错,“未将对象引用设置到对象的实例”!    如何解决?

问题补充:

上面那个例子是我复制错了的,头晕了!
再比如这个吧,也是同样的错误!

for (k = 2; k <= 35; k++)
                {
                    Label lableTemp = this.FindControl("CR" + k.ToString()) as Label;
                    
                        lableTemp.Text = tempC[j, k];
                }

满意回答
FindControl("CR", i)中间的i是不是应该是k,而且似乎也不该用这个方法。

试试将 (this.FindControl("CR", i) as Label).Text = tempC[j, k];
换成
Label l;
l=(Label)FindControl("CR"+k.ToString());
l.Text=tempC[j,k];

或者直接改成
(Label)FindControl("CR"+k.ToString()).Text = tempC[j, k];
追问
呃,下面那个是我弄错了,当时是
 for (k = 2; k <= 10; k++)
                {
                    (this.FindControl("CR"+ k.tostring()) as Label).Text = tempC[j, k];
                }
就是抛那个错误,无奈了在乱搞呢,我先去试试!

l.Text = tempC[j, k];
这条,“未将对象引用设置到对象的实例”。
呃。。
回答
Label l;
l=(Label)FindControl("CR"+k.ToString());
if(l!=null)
l.Text=tempC[j,k];
追问
有IF没有出错,但是数据也没有进入Label ,因为l.Text=tempC[j,k]; 貌似根本就没运行,另外我看了下,中断的时候, 局部变量 l 的值 根本就是 NULL, 这是怎么情况呢?
回答
这个也就是说findcontrol根本就没找到那个控件,具体原因你需要再检查,比如说你的cr2之类都在LoginView1中,那就要用this.LoginView1.FindControl

 

 

希望能帮到大家,也希望自己早日成长,摆脱这些常识性的新手问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值