在ASP.Net VB中从Codebehind生成首页HTML

时间:2011-09-19 23:43:36

标签: jquery asp.net html vb.net

我正在开展一个娱乐项目,以帮助自己了解vb.net的细节并将其互连。因此,任何可以改进我的方法的建议都会受到赞赏!

现在,我正在制作一个自我更新的Excel工作表,并从工作表中构建小的html块,这些块将适合JQuery列表分类器和图像查看器(标签和标签)。我遇到的问题是,通过将代码放在页面上的文字中,html永远不会放在页面上,它是动态生成的,因此JQuery处理程序无法挂钩标记,并且分拣机不起作用。

我知道有一种方法可以使用<%= var%>添加后面代码中的变量,但是我需要添加大量的变量,这些变量会随着excel表的更新而改变,这就是为什么我是使用函数后面的代码来生成一个循环而不是不断地重写它。

这是我当前的Code behind函数,它生成并插入文字:

        Dim count As Integer
        count = ds.Tables(0).Rows.Count
        Dim tags As String
        Dim HeroNm As String
        For i = 0 To count Step 1

            tags = ds.Tables(0).Rows(i).Item("Tags").ToString
            HeroNm = ds.Tables(0).Rows(i).Item("Champion Name").ToString

            ' Add the sorter entry
            Panel1.Controls.Add(New LiteralControl("<li style='display: block;' class='" & tags & "' >"))
            Panel1.Controls.Add(New LiteralControl("<b><a id='inline' href='#data" & i & "'><img src='Pictures/Heroes/" & HeroNm & ".jpg ' alt='' /></a></b>"))
            Panel1.Controls.Add(New LiteralControl("<p>" & HeroNm & "</p>"))
            Panel1.Controls.Add(New LiteralControl("</li>"))

            ' add the popup entry
            Panel2.Controls.Add(New LiteralControl("<div style='display:none'>"))
            Panel2.Controls.Add(New LiteralControl("<div id='data" & i & "'>"))
            Panel2.Controls.Add(New LiteralControl("Testing text for " & HeroNm))
            Panel2.Controls.Add(New LiteralControl("</div>"))
            Panel2.Controls.Add(New LiteralControl("</div>"))
        Next i

    Catch
    Finally
        ' Close connection
        oledbConn.Close()

    End Try

End Sub

代码需要插入头版中列出的两部分:

<ul id="portfolio-list">

        <asp:Panel ID="Panel1" runat="server">
        </asp:Panel>

        <!-- clear -->
        <li style="overflow: hidden; clear: both; height: 0px; position: relative; float: none; display: block;"></li>
    </ul>

第二个在后面列出,这部分不重要,因为它会显示项目条目点击的信息。

我正在使用Portfolio Sorter和灯箱变体

1 个答案:

答案 0 :(得分:0)

如果为要定位的元素呈现唯一ID或CSS类,则可以将事件处理程序附加到您想要的任何内容。让您的页面也呈现以下JS:

panel2.Controls.Add(new LiteralControl("<script type='text/javascript'>myJScalls</script>"));

你可以写出:

$(document).ready(function() {
   $("#myelementbyID").whatever();
});

此外,如果您正在寻找可重用性,请将其设置为自定义控件。

HTH。