0

我有 1 个项目网站(报价网站) 我有一个页面,其中显示所有报价以收集。(下面的屏幕截图)。我使用存储过程来显示这个结果。

在此处输入图像描述

现在我的主要问题:

如您所见,有一个标签字段,例如:标签:生活,有趣,领导力,励志,友谊

但是这个值来自数据库列类别。我正在使用单个标签来显示这些所有类别。

但我想将其划分为单个类别并将用户重定向到他单击的特定类别。

有什么办法可以将这个单个标签分成多个超链接?

我的存储过程(以防 any1 需要)

ALTER Proc text_quotes
    (
    @cat varchar(50)
    )
as
begin
    select p.id,p.title,p.description,p.category,p.metadescp,p.metatitle,p.tags,f.img
    from tbl_upload_image p
    inner join tbl_author f
    on p.description = f.name
    where p.category like '%' + @cat + '%'
    order by p.upload_date desc
end

来自数据库的示例条目:

编号:12

引用:dghjn

类别:生活、搞笑、领导力、励志、友谊

作者:金凯瑞

更新:

我使用了以下编码:

foreach (DataListItem item in DataList4.Items)
        {
            Repeater RepeaterQ = ((Repeater)(item.FindControl("Repeater1")));
            string categories = ((Label)(item.FindControl("categoryLabel"))).ToString();

            // Label lblCategory = ((Label)(DataList4.FindControl("categoryLabel")));
            string[] arr1 = categories.Split(',');

            RepeaterQ.DataSource = arr1;

            RepeaterQ.DataBind();
        }

但我将“System.Web.UI.WebControls.Label”作为转发器中的文本。有什么帮助吗?

4

1 回答 1

0

如果您将类别数据放在变量中,categories那么我想您将分配给标签lblCategory作为示例。

lblCategory.Text = categories;

如果你这样做,那么你可以试试这个。

lblCategory.Text = String.Join("", 
     categories.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries) //Split Category csv to array of categories
    .Select(x=>String.Format("<a href='page.aspx?cat={0}'>{0}</a>"), x)) // return all categories with formatted anchor tag
    .ToArray() // Convert To Array
); //Join with empty string and assign to label text property

首先用逗号分隔您的类别,然后使用. 选择Linq Extension 方法返回一个格式化的超链接,并加入这些链接并分配给标签。

或者您可以在那里使用中继器来绑定您的类别。

更新:

foreach (DataListItem item in DataList4.Items)
{
    Repeater RepeaterQ = ((Repeater)(item.FindControl("Repeater1")));
    //string categories = ((Label)(item.FindControl("categoryLabel"))).ToString();
    string categories = ((Label)(item.FindControl("categoryLabel"))).Text;
    string[] arr1 = categories.Split(',');
    RepeaterQ.DataSource = arr1;
    RepeaterQ.DataBind();
}
于 2013-06-08T10:08:12.640 回答