Label:未将对象引用设置到对象的实例?(不好意思没分给了)
<asp:AccessDataSource ID="ADS1" runat="server" DataFile="~/DataBase.mdb" SelectCommand="SELECT * FROM [Message]"></asp:AccessDataSource>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ADS1" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
<table width="450" border="1" align="center" cellpadding="5" cellspacing="1">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="105" height="18"><div align="center"><asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'></asp:Label></div></td>
.........
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Label Label1 = (Label)e.Item.FindControl("Label1");
if (Label1.Text != "")
......
}
在if (Label1.Text != "")这行提示未将对象引用设置到对象的实例。
MSDN里我查到ItemDataBound 在 Repeater 中的某项被数据绑定之后,但在呈现于页面上之前发生。这样的话就说明了我的Label1控件已经绑定数据了呀。只是没有呈现于页面上。那使用FindControl方法的话,应该能找到Label1的吧。可是这里为何还会提示未将对象引用设置到对象的实例呢?
问题点数:0、回复次数:4Top
1 楼yurow(路漫漫其修远兮,吾将上下而爬楼梯!)回复于 2006-05-04 20:21:08 得分 0
Label Label1 = (Label)e.Item.FindControl("Label1");
去掉是是Top
2 楼feifeile()回复于 2006-05-04 20:22:06 得分 0
要先定义一个新的Label1吧
然后才能使用Top
3 楼yanglan(杨澜)回复于 2006-05-04 20:34:20 得分 0
直接在DataBind 里面写就可以了.
例如:
Msslist.DataBind();
for (int i=0;i<Msslist.Items.Count;i++)
{
Label LB_reads = (Label)Msslist.Items[i].FindControl("LB_reads");
if (LB_reads.Text == "True")
{
LB_reads.Text = "<font color=red>已阅读</font>";
}
else
{
LB_reads.Text = "<font color=blur>未阅读</font>";
}
}
==========================
= CSDN小助手 v3.0[内测] =
= 全新体验 共同期待 =
==========================Top
4 楼lei1252094(ぜ缘来素雅々)回复于 2006-05-04 20:55:39 得分 0
喔。。谢谢。。Top




