在listview中获取标签文本

时间:2012-08-06 10:18:00

标签: asp.net listview

我有一个列表视图,里面有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;
}

3 个答案:

答案 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。你必须确保这是正确的使用,也许你正在寻找另一个事件。

要验证是否正确设置了所有实例,请在实例化返回空引用的控件时设置断点。如果你在达到断点之前得到了例外,那么你应该明白发生了什么。逐步运行代码。