2012-05-18 29 views
0

你好我的問題是我有一個名爲TweetText的Grid視圖中的Column,它總是有一個Url。我想讓URl成爲可點擊的鏈接。我設法在頁面加載時做到這一點。但是,當我更改網格的頁碼時,TweetText的文本保持不變,即不變。在這裏寫我的代碼。我也在GridView1_PageIndexChanged上執行此代碼。但沒有任何幫助。還有一件事是我不想讓整個專欄有一個鏈接。我只想讓網址在列作爲鏈接​​將文本轉換爲gridview中的鏈接asp.net

if (!Page.IsPostBack) 
      { 
       for (int i = 0; i < GridView1.Rows.Count; i++) 
       { 
        GridViewRow row = GridView1.Rows[i]; 
        String Url = SmartyPlants.Classes.TwitterData.GetUrlStrings(row.Cells[5].Text); 
        bool Check = SmartyPlants.Classes.TwitterData.IsUrlValid(Url); 
        int Index = Url.IndexOf(" "); 
        if (Url.Contains(" ")) 
        { 
         Url = Url.Remove(Index); 
        } 
        String link = MakeLink(Url); 
        row.Cells[5].Text = row.Cells[5].Text.Replace(Url, link); 
       } 
      } 
public static string MakeLink(string txt) 
     { 
      Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase); 

      MatchCollection mactches = regx.Matches(txt); 

      foreach (Match match in mactches) 
      { 
       txt = txt.Replace(match.Value, "<a href='" + match.Value + "'>" + match.Value + "</a>"); 
      } 
public static bool IsUrlValid(string url) 
     { 
      return Regex.IsMatch(url, @"(http|https)://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"); 
     } 
     public static string GetUrlStrings(string text) 
     { 
      MatchCollection ms = Regex.Matches(text, @"(www.+|http.+)([\s]|$)"); 
      string testMatch = ms[0].Value.ToString(); 
      return testMatch; 
     } 

      return txt; 
     } 
+1

提供網格標記和你是如何得到這個網址???它是否有一些數據源列條目? –

+0

還有一件事是我不想讓整個列都有鏈接。我只想將列中的Url作爲鏈接 –

回答

0

使用本

<asp:HyperLinkField DataNavigateUrlFields="id" Text="Details" ControlStyle-Font-old="true" 
DataNavigateUrlFormatString="~/pages/UserDetails.aspx?id={0}" /> 

DataNavigateUrlFormatString動態或U可以用戶Hyperlinkitemtemplet

1

你爲什麼不使用只HyperLink控件在gridview中並使用​​,如果你已經有數據?

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='Default.aspx?ID=<%#Eval("id")%>' Text="TweetText"></asp:HyperLink> 
    </ItemTemplate> 
</asp:TemplateField> 

OR

你甚至可以找到GridView控件OnRowDataBound事件中的超鏈接。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
    HyperLink myHyperLink = e.Row.FindControl("HyperLink1") as HyperLink; 
    if(myHyperLink !=null) 
    { 
     //myHyperLink.NavigateUrl="URL"; 
    } 
    } 

}

相關問題