使用C#解决方案获取Listview标签

时间:2015-03-18 17:24:05

标签: c# asp.net listview

我想使用此解决方案将URL转换为listview标签中的链接。

private string ConvertUrlsToLinks(string text)
{
   string regex = @"((www\.|(http|https|ftp|news|file)+\:\/\/)[&#95;.a-z0-9-]+\.[a-z0-9\/&#95;:@=.+?,##%&~_-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])";
    System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
    return r.Replace(text, "<a href=\"$1\" title=\"Open in a new window or tab\" target=\"&#95;blank\">$1</a>").Replace("href=\"www", "href=\"http://www");
}

我在listview数据绑定中尝试了这个但是它没有用。

  protected void ProjectRecentActiviyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        Label ProjectPostLabel = (Label)e.Item.FindControl("ProjectPostLabel");

        ProjectPostLabel = ConvertUrlsToLinks({0});
    }

谢谢

1 个答案:

答案 0 :(得分:0)

根据您的代码,您使用的是ASP.NET Web窗体,而不是MVC。

  1. 您必须将ProjectPostLabel实例与Text属性一起使用 - 无需创建未分配给任何地方的新标签。
  2. 从您的活动中,您必须检索Url属性,而不是标签控件。我在ListView中使用了NorthwindEmployee类和URL属性。您必须将其强制转换为列表视图中使用的自己的类。

    protected void ProjectRecentActiviyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        ProjectPostLabel.Text = ConvertUrlsToLinks(((NorthwindEmployee)e.Item.DataItem).URL);
    }
    
  3. 并且您必须记住,只有列表视图中的最后一项才会显示在标签中(除非您希望这种行为)。如果您想从列表中列出URL,可以写下:

        protected void Page_Load(object sender, EventArgs e)
        {
            ProjectPostLabel.Text = string.Empty;
        }
    
        protected void ProjectRecentActiviyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            ProjectPostLabel.Text += string.Format("{0}<br/>", ConvertUrlsToLinks(((NorthwindEmployee)e.Item.DataItem).URL));
        }