如何从代码后面找到嵌套在listView中的FormView

本文关键字:嵌套 listView 中的 FormView 代码 | 更新日期: 2023-09-27 18:19:13

我有一个表单视图(FormView1)是嵌套在列表视图(listview1)。下面的代码不起作用,因为在当前上下文中找不到FormView1。任何建议吗?

protected void FormView1_DataBound(object sender, EventArgs e)
    {
        if (FormView1.DataItemCount == 0)
        {
            //do stuff;
        }           
    }

如何从代码后面找到嵌套在listView中的FormView

我设法通过在ListView中找到FormView作为控件来解决问题,如下所示(在我的情况下,ListView只返回一行):

protected void ListView1_DataBound(object sender, ListViewItemEventArgs e)
    {
        FormView = (FormView)e.Item.FindControl("FormView1"); 
        if (FormView1.DataItemCount == 0)
    {
        //do stuff;
    }          

    }

由于FormView嵌套在ListView中,因此FormView的ID对于ListView中的每个项目都是不同的。您可以在查看页面的源代码时看到这一点。它应该看起来像"listview1_ctrl0_FormView1","listview1_ctrl1_FormView1"等。这就是为什么没有找到"FormView1"。

在你的情况下,因为你使用的是FormView的DataBound处理程序,"sender"对象在这种情况下是实际的FormView。将其转换为FormView,然后就可以了。

FormView FormView1 = (FormView)sender;