asp.net tag clound 实现

asp.net tag cloud 实现

css :

body { font-family: Verdana; } .CloudBox { width:300px; text-align:center; border:solid 1px navy; background-color: white; }

TagCloudDemo.aspx页面实现:

<div class="CloudBox"> <asp:SqlDataSource ID="CategoriesProductsBreakdownDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT Categories.CategoryID, Categories.CategoryName, COUNT(Products.ProductID) AS NumberOfProducts FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID GROUP BY Categories.CategoryID, Categories.CategoryName ORDER BY Categories.CategoryName"> </asp:SqlDataSource> <asp:Literal ID="CloudMarkup" runat="server"></asp:Literal> </div>

后台代码:

Private Sub PopulateCloud() CloudMarkup.Text = String.Empty 'First, read data from SqlDataSource Dim cloudData As DataView = CType(CategoriesProductsBreakdownDataSource.Select(DataSourceSelectArguments.Empty), DataView) 'We need to determine each category's weight... a lot of options here on how to do this... Const SpacerMarkup As String = " " 'The markup injected between each item in the cloud Dim FontScale() As String = {"xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large"} 'All database column names are centralized here. To customize this, simply modify the column names here Const WeightColumnName As String = "NumberOfProducts" Const TextColumnName As String = "CategoryName" Const NavigateUrlColumnName As String = "CategoryID" Const NavigateUrlFormatString As String = "~/ViewProductsByCategory.aspx?CategoryID={0}" Dim minWeight As Decimal = Decimal.MaxValue, maxWeight As Decimal = Decimal.MinValue For Each row As DataRowView In cloudData Dim numProductsObj As Object = row(WeightColumnName) If Not Convert.IsDBNull(numProductsObj) Then Dim numProductsDec As Decimal = Convert.ToDecimal(numProductsObj) If numProductsDec < minWeight Then minWeight = numProductsDec If numProductsDec > maxWeight Then maxWeight = numProductsDec End If Next 'Output each category, using a font size relative to its place on the scale Dim scaleUnitLength As Decimal = (maxWeight - minWeight + 1) / Convert.ToDecimal(FontScale.Length) For Each row As DataRowView In cloudData Dim numProductsObj As Object = row("NumberOfProducts") If Not Convert.IsDBNull(numProductsObj) Then Dim numProductsDec As Decimal = Convert.ToDecimal(numProductsObj) Dim scaleValue As Integer = Math.Truncate((numProductsDec - minWeight) / scaleUnitLength) CloudMarkup.Text &= String.Format("<a href=""{0}"" style=""font-size:{1};"">{2}</a>{3}", _ Page.ResolveUrl(String.Format(NavigateUrlFormatString, row(NavigateUrlColumnName).ToString())), _ FontScale(scaleValue), row(TextColumnName).ToString(), SpacerMarkup) End If Next End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值