我有一个列表视图,里面有2个标签,列表视图外有1个标签(lbl1)。 我想让lbl1 text = listview中的标签。
请详细回答,我是个菜鸟。 每当我运行以下代码时,我都会收到此错误: “对象引用未设置为对象的实例”
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
Label mylabel = (Label)ListView1.FindControl("prog_idLabel");
lbl1.Text = mylabel.Text;
}
答案 0 :(得分:2)
这是修复:
foreach (ListViewItem item in ListView1.Items)
{
Label mylabel = (Label)item.FindControl("prog_idLabel");
lblID.Text = mylabel.Text;
}
答案 1 :(得分:0)
首先,一些防御性编程不会让你的应用程序崩溃。
protected void Page_Load(object sender, EventArgs e)
{
Label mylabel = (Label)ListView1.FindControl("prog_idLabel");
if(mylabel != null)
lbl1.Text = mylabel.Text;
}
这样,如果FindControl返回null,或者您的转换不起作用,则不会访问null对象。
我认为在实例化listview中的标签之前会调用page_load。 因此,请考虑将代码放在其他位置,以确保所有内容都已初始化。
答案 2 :(得分:0)
您必须首先确保您的控件都设置为对象的实例。看起来情况并非如此。你正在开发一个ASP.NET项目吗?如果是这样,它看起来像your event handler is this one。你必须确保这是正确的使用,也许你正在寻找另一个事件。
要验证是否正确设置了所有实例,请在实例化返回空引用的控件时设置断点。如果你在达到断点之前得到了例外,那么你应该明白发生了什么。逐步运行代码。