2012-05-18 4 views
0

안녕하세요 제 문제는 필자가 항상 URL이있는 TweetText라는 그리드보기의 열이 있다는 것입니다. 그 URl을 클릭 할 수있는 링크로 만들고 싶습니다. 페이지로드시이 작업을 수행했습니다. 그러나 그리드의 페이지 번호를 변경하면 TweetText의 텍스트는 동일하게 유지됩니다. 여기에 내 코드를 작성하십시오. 나는 GridView1_PageIndexChanged에서이 코드를 수행하고있다. 그러나 아무것도 도움이되지 않습니다. 한 가지 더 중요한 것은 전체 열에 링크가 있기를 원하지 않는다는 것입니다. 난 그냥 DataNavigateUrlFormatString 동적텍스트를 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

는 그리드 마크 업을 제공하는 방법이 URL을 얻고있다 ??? 일부 데이터 원본 열 항목이 있습니까 ?? –

+0

한 가지 더 해보면 전체 열에 링크가 있어야합니다. 난 그냥 칼럼에있는 URL을 링크로 만들고 싶다. –

답변

0

사용 링크로 열이

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

세트를 URL을 만들고 싶어 또는 u 왜 그냥 사용하지 않는

1

itemtemplet의 사용자 Hyperlink을 할 수 HyperLink 컨트롤이 gridview에 있고 데이터가 이미있는 경우 Eval()을 사용 하시겠습니까?

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

또는

당신도의 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"; 
    } 
    } 

}

관련 문제