2013-03-15 51 views
0

我的問題是,我創建了一個方法,將返回一個SQL表中的所有鏈接,我可以將它們傳遞給一個標籤,但我的問題是這些鏈接不可點擊... 有沒有辦法解決這個問題?或者可能是將鏈接傳遞到表或其他東西的方式? 謝謝!ASP.net中的可點擊標籤(c#)

的代碼如下所示:

service1.WebServiceLinks a1 = new service1.WebServiceLinks(); 
     string result = a1.GetLinks(); 


     Label1.Text = result; 

這是GetLinks()的代碼:

public static string GetLinks() 
{ 

    string query = string.Format("SELECT Link FROM Linkovi"); 
    StringBuilder result = new StringBuilder(); 
    try 
    { 
     conn.Open(); 
     command.CommandText = query; 

     SqlDataReader reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
      result.Append(reader["Link"].ToString()); 
     } 
     reader.Close(); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
    return result.ToString(); 
} 
+0

如果您需要鏈接,請使用「HyperLink」控件而不是「Label」。你現在的代碼是什麼樣的?你是否使用某種數據綁定控件來顯示結果? – mellamokb 2013-03-15 17:52:58

+0

'a1.GetLinks()'的結果是什麼樣的?這是一個網站的集合?它有鏈接的HTML嗎?爲什麼你的web服務只是返回一個大字符串,而不是一些更好地反映信息的自定義類? – mellamokb 2013-03-15 18:02:28

+0

public static string GetLinks() { string query = string.Format(「SELECT Link FROM Linkovi」); StringBuilder result = new StringBuilder(); 嘗試 { conn.Open(); command.CommandText = query; SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { result.Append(reader [「Link」]。的ToString()); } reader.Close(); } finally { conn.Close(); } return result.ToString(); } – user2167123 2013-03-15 18:06:03

回答

1

裏面既然你的Web服務的兩端的控制,請你幫個忙,並返回有意義的信息,而不僅僅是一個巨大的字符串。最起碼,返回List<string>集合:

public static List<string> GetLinks() 
{ 
    string query = string.Format("SELECT Link FROM Linkovi"); 
    List<string> result = new List<string>(); 
    try { 
     conn.Open(); 
     command.CommandText = query; 
     SqlDataReader reader = command.ExecuteReader(); 
     while (reader.Read()) { 
      result.Add(reader["Link"].ToString()); 
     } 
     reader.Close(); 
    } finally { 
     conn.Close(); 
    } 
    return result; 
} 

然後顯示的結果,使用類似必然結果的Repeater控制,具有HyperLink顯示可點擊的鏈接:

<asp:Repeater ID="LinkDisplay" runat="server"> 
<ItemTemplate> 
    <asp:HyperLink ID="TheLink" runat="server" 
     NavigateUrl='<%#Container.DataItem%>' Text='<%#Container.DataItem%>'> 
    </asp:HyperLink> 
</ItemTemplate> 
</asp:Repeater> 

並綁定中繼器的結果Page_Load

void Page_Load(object sender, EventArgs e) { 
    service1.WebServiceLinks a1 = new service1.WebServiceLinks(); 
    LinkDisplay.DataSource = a1.GetLinks(); 
    LinkDisplay.DataBind(); 
} 
+0

謝謝你mellamokb,但我不知道如何調用Web方法後? – user2167123 2013-03-15 18:19:54

+0

以前我只有這樣的代碼: [WebMethod] public string GetLinks() { return ConnectionClass.GetLinks(); } } – user2167123 2013-03-15 18:20:13

+0

您只需要'公共列表 GetLinks()'而不是。這個想法是你不僅限於傳遞字符串。當您使用Web服務傳遞數據時,只需儘可能多地發送數據。然後應用程序應該負責格式。將這些擔憂分開。 – mellamokb 2013-03-15 18:22:03

3

取而代之的是標籤的,爲什麼不使用Hyperlink控制?它呈現一個鏈接(錨點元素)。因此,您應該能夠設置可點擊的鏈接。

0

包裹它的錨標記

<a href="your_link" >text</a>

0

<label>標籤必須具有for屬性,請參閱<input>元素的id。一旦你得到了這個,<label> [應該]是熱點和可點擊的任何符合標準的瀏覽器。

這裏有你想要的那種HTML標記的一個例子:

<li><input id="options-rb1" type="checkbox" name="options" value="1"/><input<label for="options-rb1">&nbsp;Option 1</label></li> 
<li><input id="options-rb2" type="checkbox" name="options" value="2"/><input<label for="options-rb2">&nbsp;Option 2</label></li> 
<li><input id="options-rb3" type="checkbox" name="options" value="4"/><input<label for="options-rb3">&nbsp;Option 3</label></li> 
<li><input id="options-rb4" type="checkbox" name="options" value="8"/><input<label for="options-rb4">&nbsp;Option 4</label></li> 

一旦不應該的是,<label>元件不需要相鄰(甚至附近)與它並列的<input>元素。