注册 登录
编程论坛 ASP.NET技术论坛

循环为控件赋值

魔城侠客 发布于 2007-11-17 10:32, 2349 次点击
假如页面上有lbl1,lbl2,lbl3,lbl4四个控件
通过循环可以为四个控件进行赋值

但是利用母版页的生成页中进行这样的操作时,就会提示错误,没有办法找到lbl1等四个控件
程序如下:
int j=1;
for(int i=1;i<=4;i++)
{
Label lbl = (Label)Page.FindControl("lbl" + j.ToString());
lbl.Text="vvv";
j++;
}

在普通的页面中是可以的,请高手帮忙
14 回复
#2
bygg2007-11-17 14:35

你这代码是写在哪里的啊?

#3
冰彩虹2007-11-17 16:12
按钮放在哪个页面?代码又是放哪个页面呢?

说清楚呀大哥哥...
#4
魔城侠客2007-11-18 09:03
按钮就放在一个普通的页面上啊
代码是写在page_load里
但是如果把按钮放在母版的内容生成页中
就会提示找不到按钮


放在普通页面上是可以的
#5
baoguoping2007-11-18 10:36
你把你的控件放到一个数组里.然后赋值怎么样???
#6
冰彩虹2007-11-18 12:21
以下是引用魔城侠客在2007-11-18 9:03:50的发言:
按钮就放在一个普通的页面上啊
代码是写在page_load里
但是如果把按钮放在母版的内容生成页中
就会提示找不到按钮


放在普通页面上是可以的

如果按钮放母板页上,你那样写肯定取不到的呀

要这样子来:

Page.MasterPage.FindControl(ControlID);


试试看吧

#7
魔城侠客2007-11-18 13:46
按钮没有放在母板页上,而是放在母版页内容生成页
按上面的方法还是不行
高手继续
#8
imbug2007-11-18 14:10
你必须先找到FORM表单,以后,才能找到页面的控件,必须如此!!否则程序会报错

因为所有的控件都是包含在FORM表单中。

简单的写了一下,应该有更简洁的方法,希望有高手继续,我也是刚学,献丑了!!


foreach(Control fr in this.Controls)
{
if(fr is HtmlForm)
{
foreach(Control tb in fr.Controls)
{
if(tb is TextBox)
{
TextBox tbox = (TextBox)tb;
tbox.Text = "abc";
}
}
}
}

[此贴子已经被作者于2007-11-18 14:18:33编辑过]

#9
冰彩虹2007-11-18 14:16

不明白你啥意思...


帖代码吧你

#10
imbug2007-11-18 14:22
上面简单写了一下,效果就是,页面加载的时候,为页面上所有的TEXTBOX循环赋值,无论有多少相同类型的控件,均赋为统一的值,不知道,楼主是否需要这种效果!!
#11
魔城侠客2007-11-18 15:01

对,现在问题这些控件在普通页面上时候可能通过循环为各控件赋值
但是这些控件如果是在母版页的内容生成页上时循环就不能找到这些控件了

#12
imbug2007-11-18 15:25
这儿有微软的一个例子http://msdn2.microsoft.com/zh-cn/library/xxwa0ff0(VS.80).aspx 希望能对你有所帮助。
母板页是2005 新引进的概念吧,我这儿现在还用2003呢,看样也要装个05学学了!!

void Page_Load()
{
// Gets a reference to a TextBox control inside
// a ContentPlaceHolder
ContentPlaceHolder mpContentPlaceHolder;
TextBox mpTextBox;
mpContentPlaceHolder =
(ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if(mpContentPlaceHolder != null)
{
mpTextBox =
(TextBox) mpContentPlaceHolder.FindControl("TextBox1");
if(mpTextBox != null)
{
mpTextBox.Text = "TextBox found!";
}
}

// Gets a reference to a Label control that not in
// a ContentPlaceHolder
Label mpLabel = (Label) Master.FindControl("masterPageLabel");
if(mpLabel != null)
{
Label1.Text = "Master page label = " + mpLabel.Text;
}
}

[此贴子已经被作者于2007-11-18 15:26:19编辑过]

#13
魔城侠客2007-11-18 18:02
终于搞定了
非常感谢imbug
#14
冰彩虹2007-11-18 20:13
对头,我把ContentPlaceHolder给忘了
#15
CtrlJava2011-04-01 16:55
写的挺好的但不够简洁
1