在数组中,我们可以如下命名 int num[12],则可以用num[0]到num[11]。
但是在程序里,有没有办法如下使用:我定义了一些变量比如 num1,num2,num3,num4……
有没有类似于如下代码的方法使用num1,num2,num3,num4等?for(int i=0;i<4;i++)
{
num[i]=i;
}
之所以问这个问题,是因为前面网页设计的时候label的名字是自动生成的,从label1到label24,想在一个循环里面处理它们。如果要修改为数组,感觉有点麻烦啊。
但是在程序里,有没有办法如下使用:我定义了一些变量比如 num1,num2,num3,num4……
有没有类似于如下代码的方法使用num1,num2,num3,num4等?for(int i=0;i<4;i++)
{
num[i]=i;
}
之所以问这个问题,是因为前面网页设计的时候label的名字是自动生成的,从label1到label24,想在一个循环里面处理它们。如果要修改为数组,感觉有点麻烦啊。
for里面是:numi?num[i],我都试过,均报错。
然后对labelArray[i]逐个赋值,赋值结束后就可以对Label数组进行操作了
这是我想到的,有没有更好的方法,请大家一起探讨
for(int i=1;i<=24;i++)
{
Label lab = this.form1.FindControl("Label" + i) as Label;
if(lab != null)
{
//to do...
}
}
{
HyperLink hylink = this.Form.FindControl("HyperLink"+i) as HyperLink;
Label lbl = this.Form.FindControl("Label" + i) as Label;
if (hylink!=null)
{
hylink.NavigateUrl = "images/folder.jpg";
}
if (lbl!=null)
{
lbl.Text = i.ToString();
}
//this.HyperLink+[i+1].NavigateUrl = "images/folder.jpg";
}所有控件都是在aspx文件中写好的,定义如下:名字依次为HyperLink1 HyperLink2 HyperLink3<asp:HyperLink ID="HyperLink1" runat="server" EnableViewState="False" Height="120px"
Target="_blank" Width="160px">Click for details</asp:HyperLink></td>
<td style="width: 200px; height: 30px">
<asp:Label ID="Label1" runat="server" EnableViewState="False"></asp:Label></td>
this.FindControl
编写代码:
Label lab = this.form1.FindControl("Label" + i) as Label;
Label lbl = this.Form.FindControl("Label" + i) as Label;
Label l = (Label)this.Master.FindControl("MainBody").FindControl("Label" + i);//此页面直接继承自index.master但是有多层的话,我还没有找到方法。我的想法是:
Label lbl = (Label)this.Master.FindControl("FreeDownBody").FindControl("MainBody").FindControl("Label" + i);
但是报错。
可以这样:for(int i=1;i<=24;i++)
{
Label lab = this.Controls["Label"+i] as Label;
if(lab!=null)
{
//to do...
}
}
this.Master.Master.FindControl("Label"+i)
第一层是index.masterpage,第二层是freedown.masterpage,freedown.aspx直接继承自freedown.masterpage。我做过小测试,新建一个test.aspx,直接继承indes.masterpage,那么可以找到。
大概如下:如果只有一层masterpage的话,是可以找到的,代码大概如下:
Label l = (Label)this.Master.FindControl("MainBody").FindControl("Label" + i);//此页面直接继承自index.master 但是有多层的话,我还没有找到方法。我的想法是:
Label lbl = (Label)this.Master.FindControl("FreeDownBody").FindControl("MainBody").FindControl("Label" + i);
但是报错。
还有你的FindControl代码写在哪里?index.master.cs?freedown.master.cs?还是test.aspx.cs?
http://topic.csdn.net/u/20090603/13/f4a772b7-639f-4fd1-9f14-411f5e1d014e.html 这里是更详细说明
之所以这样,是因为Label有个Name属性,但是当你在程序中自定义变量时是不可以这样的!
for(int i=1;i<=24;i++)
{
Label lab = this.Controls["Label"+i] as Label;
if(lab!=null)
{
//to do...
}
}