【问题标题】:Adding html list items dynamically from code behind?从后面的代码动态添加html列表项?
【发布时间】:2011-09-19 08:39:07
【问题描述】:

以上是我的 .aspx 页面中的代码。 如何从后面的代码中动态添加?

<ul runat="server" id="1">
<li><a href="page.html">abc</a>
  <ul runat="server" id="2">
  <li><a href="pag2.htm">3</a></li>
  <li><a href="page3.htm">2</a></li>
  </ul>
</li>
</ul>

【问题讨论】:

  • 我建议使用带有嵌套项目符号列表控件的中继器。但我希望数据只有一层……?

标签: c# asp.net list


【解决方案1】:

您可以使用此链接中给出的教程进行类比: http://neimke.blogspot.com/2011/01/create-delicious-user-interface-for.html 它对我有用 - 它使用下面的给定代码使用 jquery 动态添加列表项 .. 检查它 pout ...

 <li id="tagInputListItem"><input class="tagInput" id="tagInput" /></li>

【讨论】:

    【解决方案2】:

    您可以在 .aspx 中放置一个 PlaceHolder 并为其指定一个 id,然后在页面后面的代码中使用该 id 并将控件添加到该占位符。 更多信息可以在here.看到

    如果你真的确定“runat=server”属性也许我的这篇文章很有用 (here)

    如果您需要澄清,请给我反馈。

    【讨论】:

    • 您只能对那些
        使用控件,并为它们的 InnerHtml 放置相应的
      • 。但是对于那些带有“runat='server'”的标签,你不能在不使用asp控件的情况下执行此操作。所以你必须使用 HtmlGenericControls("ul")。
    【解决方案3】:

    您必须使用“sidebarmenu1”控件的“InnerHtml”属性。

    protected void Page_Load(object sender, EventArgs e)
            {
                this.loadHtml();
            }
    

    这样您就可以生成每个列表项代码并将其添加到 InnerHtml:

    private loadHtml()
    {
        this.sidebarmenu1.InnerHtml = GetListHtml().ToHtmlString();
    }
    

    还有一个关于这个 GetListHtml 的小例子:

    public string GetListHtml()
            {
                StringBuilder htmlBuilder = new StringBuilder();
    
                htmlBuilder.AppendLine("<li><a href="#">Flat</a>");
                htmlBuilder.Append("<ul runat="server" id="sidebarmenu2">");
                htmlBuilder.AppendLine("<li><a href="#">Flat 1`enter code here`</a></li>");
                htmlBuilder.Append("<li><a href="#">Flat 2</a></li></ul>");
                return htmlBuilder.ToString();
            }
    

    此 GetListHtml 方法可以调用 DAL 或从任何其他地方加载数据...使用 foreach 加载每个项目...

    【讨论】:

    • 我猜你用双引号括起来的字符串(属性值)不起作用。例如:htmlBuilder.AppendLine("
    • Flat");必须替换为 htmlBuilder.AppendLine("
    • Flat");属性值必须用单引号括起来吗?
    【解决方案4】:

    您可以使用 ASP Literal 从后端代码填充数据 例如。如果你有 id 为 ltrNavigation 的文字

    protected void Page_Load(object sender, EventArgs e)
    {
           ltrNavigation.text = "";
            if (!IsPostBack)
            {
               ltrNavigation.text += "<ul id='sidebarmenu1'>";
               ltrNavigation.text += "<li><a href='#'>Flat</a></li>";
               ltrNavigation.text += "</ul>";
            }
    
    }
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签