本文介绍了如何添加在ASP.net第二个级别的项目符号列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的HTML code这我想转换为ASP.net控制:

 < UL>
    <李类='积极'>< A HREF ='about_us.aspx'>关于美国和LT; / A>< /李>
    <立GT;< A HREF =mission.aspx>使命与LT; / A>< /李>
    <李类='有子'>< A HREF ='#'>领先与LT; / A>
        < UL>
            <立GT;< A HREF ='#'> president< / A>< /李>
            <立GT;< A HREF ='#'>医疗主任和LT; / A>< /李>
            <立GT;< A HREF ='#'>董事及LT董事会; / A>< /李>
            <立GT;< A HREF ='#'>关键管理员< / A>< /李>
        < / UL>
    < /李>
    <立GT;< A HREF ='history.aspx'>的历史和LT; / A>< /李>
    <立GT;< A HREF ='community_support.aspx'>社群支持与LT; / A>< /李>
< / UL>

我把它转换为ASP.net是这样的:

 < ASP:的BulletedList ID =bListMenu=服务器DISPLAYMODE =超链接>
    < ASP:列表项类=主动VALUE =about_us.aspx>关于美国和LT; / ASP:ListItem的>
    < ASP:ListItem的值=mission.aspx>使命与LT; / ASP:ListItem的>
    < ASP:列表项类=有子VALUE =#>领导
        < ASP:的BulletedList ID =bListMenuSub=服务器DISPLAYMODE =超链接>
            < ASP:ListItem的值=#> president< / ASP:ListItem的>
            < ASP:ListItem的值=#>医疗主任和LT; / ASP:ListItem的>
            < ASP:ListItem的值=#>董事及LT董事会; / ASP:ListItem的>
            < ASP:ListItem的值=#>关键管理员< / ASP:ListItem的>
        < / ASP:BulletedList中>
    < / ASP:ListItem的>
    < ASP:ListItem的值=history.aspx>的历史和LT; / ASP:ListItem的>
    < ASP:ListItem的值=community_support.aspx>社群支持与LT; / ASP:ListItem的>
< / ASP:BulletedList中>

在我访问的页面,我得到以下错误:

 分析器错误消息:的'文本'属性'ASP:列表项'不允许子对象。源错误:
9号线:LT; ASP:ListItem的值=#>董事及LT董事会; / ASP:ListItem的>
10号线:LT; ASP:ListItem的值=#>关键管理员< / ASP:ListItem的>
11号线:LT; / ASP:BulletedList中>
第12行:LT; / ASP:ListItem的>
第13行:LT; ASP:ListItem的值=history.aspx>的历史和LT; / ASP:ListItem的>
源文件:/website/includeNav/aboutUsNav.inc行:11


解决方案

如何从的,BulletedList控件可以显示列表项为下列之一:


  • 静态文本控件显示的文本不是交互式的。

  • T:System.Web.UI.WebControls.HyperLink控制用户可以单击链接导航到另一个页面。您必须提供目标URL作为各个项的Value属性。

  • LinkBut​​ton控件,用户可以点击单个项目和控制执行回发。

反正你就可以轻松实现你的任务,而是使用一个共同的转发器:

 < ASP:直放站ID =直放站的EnableViewState =假=服务器OnItemDataBound =myItemDataBound>
 <&HeaderTemplate中GT;
   < UL>
    < / HeaderTemplate中>
     <&ItemTemplate中GT;
      <立GT;<%#的eval(诺姆)%>
        < ASP:的BulletedList ID =的BulletedList=服务器>< / ASP:BulletedList中>
      < /李>
     < / ItemTemplate中>
     < FooterTemplate>
      < / UL>
     < / FooterTemplate>
< / ASP:直放站>

和填充ItemDataBound事件中的BulletedList:

 保护无效myItemDataBound(对象发件人,RepeaterItemEventArgs E)
{
    DataRowView的行= e.Item.DataItem为DataRowView的;
    如果(空==行)
        返回;    DataSet1.table1Row currentRow = row.Row为DataSet1.table1Row;    如果(currentRow!= NULL)
    {
        BulletedList中bList = e.Item.FindControl(的BulletedList)作为BulletedList中;        bList.Items.Add(富);
    }
}

I have the following HTML code which I am trying to convert to ASP.net control:

<ul>
    <li class='active'><a href='about_us.aspx'>ABOUT US</a></li>
    <li><a href="mission.aspx">MISSION</a></li>
    <li class='has-sub'><a href='#'>LEADERSHIP</a>
        <ul>
            <li><a href='#'>President</a></li>
            <li><a href='#'>Medical Director</a></li>
            <li><a href='#'>Board of Directors</a></li>
            <li><a href='#'>Key Administrators</a></li>
        </ul>
    </li>
    <li><a href='history.aspx'>HISTORY</a></li>
    <li><a href='community_support.aspx'>COMMUNITY SUPPORT</a></li>
</ul>

I converted it to ASP.net like this:

<asp:BulletedList ID="bListMenu" runat="server" DisplayMode="HyperLink">
    <asp:ListItem class="active" Value="about_us.aspx">ABOUT US</asp:ListItem>
    <asp:ListItem Value="mission.aspx">MISSION</asp:ListItem>
    <asp:ListItem class="has-sub" Value="#">LEADERSHIP
        <asp:BulletedList ID="bListMenuSub" runat="server" DisplayMode="HyperLink">
            <asp:ListItem Value="#">President</asp:ListItem>
            <asp:ListItem Value="#">Medical Director</asp:ListItem>
            <asp:ListItem Value="#">Board of Directors</asp:ListItem>
            <asp:ListItem Value="#">Key Administrators</asp:ListItem>
        </asp:BulletedList>
    </asp:ListItem>
    <asp:ListItem Value="history.aspx">HISTORY</asp:ListItem>
    <asp:ListItem Value="community_support.aspx">COMMUNITY SUPPORT</asp:ListItem>
</asp:BulletedList>

When I visit the page, i get the following error:

Parser Error Message: The 'Text' property of 'asp:ListItem' does not allow child objects.

Source Error:


Line 9:                 <asp:ListItem Value="#">Board of Directors</asp:ListItem>
Line 10:                <asp:ListItem Value="#">Key Administrators</asp:ListItem>
Line 11:            </asp:BulletedList>
Line 12:        </asp:ListItem>
Line 13:        <asp:ListItem Value="history.aspx">HISTORY</asp:ListItem>


Source File: /website/includeNav/aboutUsNav.inc    Line: 11
解决方案

How you can read from BulletedList Web Server Control, the BulletedList control can display list items as any of the following:

  • Static text The text displayed by the control is not interactive.
  • T:System.Web.UI.WebControls.HyperLink controls Users can click links to navigate to another page. You must provide a target URL as the Value property of individual items.
  • LinkButton controls Users can click individual items and the control performs a postback.

Anyway you can easily achieve your task, using instead a common repeater:

<asp:Repeater ID="repeater" EnableViewState="False" runat="server" OnItemDataBound="myItemDataBound">
 <HeaderTemplate>
   <ul>
    </HeaderTemplate>
     <ItemTemplate>
      <li><%# Eval("nome") %>
        <asp:BulletedList ID="bulletedList" runat="server"></asp:BulletedList>
      </li>
     </ItemTemplate>
     <FooterTemplate>
      </ul>
     </FooterTemplate>
</asp:Repeater>

And populate the bulletedList in ItemDataBound event:

protected void myItemDataBound(object sender, RepeaterItemEventArgs e)
{
    DataRowView row = e.Item.DataItem as DataRowView;
    if (null == row)
        return;

    DataSet1.table1Row currentRow = row.Row as DataSet1.table1Row ;

    if (currentRow != null)
    {
        BulletedList bList = e.Item.FindControl("bulletedList") as BulletedList;

        bList.Items.Add("Foo");
    }
}

这篇关于如何添加在ASP.net第二个级别的项目符号列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 10:07