Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 中继器头模板查找<;ul>;关于ItemDataBound_Asp.net_Vb.net_Repeater_Findcontrol - Fatal编程技术网

Asp.net 中继器头模板查找<;ul>;关于ItemDataBound

Asp.net 中继器头模板查找<;ul>;关于ItemDataBound,asp.net,vb.net,repeater,findcontrol,Asp.net,Vb.net,Repeater,Findcontrol,我正在尝试向位于中继器HeaderTemplate中的ItemDataBound上ID为“SubNav2”的标记添加属性 但我一直得到一个错误:对象引用未设置为对象的实例 我想这是因为它找不到ID为'SubNav2'的对象,我的方法正确吗 代码隐藏 If e.Item.ItemType = ListItemType.Header Then Dim ulSubNav2 As HtmlGenericControl = CType(e.Item.FindControl("SubNav

我正在尝试向位于中继器HeaderTemplate中的ItemDataBound上ID为“SubNav2”的标记添加属性

但我一直得到一个错误:对象引用未设置为对象的实例

我想这是因为它找不到ID为'SubNav2'的对象,我的方法正确吗

代码隐藏

If e.Item.ItemType = ListItemType.Header Then

        Dim ulSubNav2 As HtmlGenericControl = CType(e.Item.FindControl("SubNav2"), HtmlGenericControl)
        ulSubNav2.Style.Add("display", "block")

    End If
    Protected Sub reSubNav2_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then

        Dim rowView As System.Data.DataRowView
        rowView = CType(e.Item.DataItem, System.Data.DataRowView)

    ElseIf e.Item.ItemType = ListItemType.Header Then

        Dim ulSubNav2 As HtmlGenericControl = CType(e.Item.FindControl("SubNav2"), HtmlGenericControl)
        ulSubNav2.Style.Add("display", "block")

    End If

End Sub
附加码 所以我想找到的是第二个中继器ID=reSubNav2。它必须有runat=server吗

<asp:Repeater ID="reSubNav" runat="server">
    <HeaderTemplate>
        <ul>
    </HeaderTemplate>
    <ItemTemplate>
        <li><asp:HyperLink ID="SubNavLink" runat="server"></asp:HyperLink>

            <asp:Repeater ID="reSubNav2" runat="server" OnItemDataBound="reSubNav2_ItemDataBound">
                <HeaderTemplate>
                    <ul id="SubNav2" style="display:none;">
                </HeaderTemplate>
                <ItemTemplate>
                     <li><asp:HyperLink ID="SubNavLink2" runat="server"></asp:HyperLink></li>
                </ItemTemplate>
                <FooterTemplate>
                    </ul>
                </FooterTemplate>
            </asp:Repeater>
            <ul>
        </li>
    </ItemTemplate>
    <FooterTemplate>
        </ul>
    </FooterTemplate>
</asp:Repeater>

确保UL具有runat=“server”标记,并且您应该能够找到它

编辑

不要在服务器上运行整个列表,而是尝试在服务器上运行列表项,如下所示:

<ul>
   <li id="listItem" runat="server">Hello!</li>
</ul>
HtmlGenericControl ctrl = e.Item.FindControl("listItem");

确保UL具有runat=“server”标记,并且您应该能够找到它

编辑

不要在服务器上运行整个列表,而是尝试在服务器上运行列表项,如下所示:

<ul>
   <li id="listItem" runat="server">Hello!</li>
</ul>
HtmlGenericControl ctrl = e.Item.FindControl("listItem");

代码看起来不错。不确定为什么找不到子AV2。你可以发布更多的代码吗?嗯…奇怪,上面发布了更多代码,谢谢你的帮助。是的,你只是看了看,因为你不能把runat=“server”放在ul标签上,它永远不会出现在服务器端,所以你只能使用javascript来完成这项工作。代码看起来不错。不确定为什么找不到子AV2。你能再发一些代码吗?嗯…奇怪,上面发了更多代码,谢谢你的帮助。是的,你只是看着它,因为你不能把runat=“server”在ul标记上,它永远不会出现在服务器端,因此您只能使用javascript来完成这项工作。我尝试过这样做,但我遇到了一个错误:创建控件时出错-reSubNav意外结束文件以查找标记(标签位于页脚模板中)。我在上面添加了更多的代码。哦!我知道你在做什么。有没有一个原因让你不能只用JavaScript来做这件事?是的,但我想做的是改变显示:
    标记上没有显示,所以需要找到它。大约有10个分区,每个分区都有一个隐藏的子AV,我想显示正确的子AV,具体取决于他们选择的分区。例如Item.FindControl(“listItem”)。Parent执行此操作???@JBoom:您可以设置它,使所有项都嵌套在列表项中吗?您正在尝试创建手风琴菜单吗?我已经尝试过了,但出现了一个错误:创建控件时出错-reSubNav意外的文件结尾,正在查找标记(
标记位于页脚模板中)。我在上面添加了更多的代码。哦!我知道你在做什么。有没有一个原因让你不能只用JavaScript来做这件事?是的,但我想做的是改变显示:
    标记上没有显示,所以需要找到它。大约有10个分区,每个分区都有一个隐藏的子AV,我想显示正确的子AV,具体取决于他们选择的分区。例如Item.FindControl(“listItem”)。Parent执行此操作???@JBoom:您可以设置它,使所有项都嵌套在列表项中吗?您正在尝试创建手风琴菜单吗?