2017-09-24 128 views
0

好吧,我已經看了這個答案,儘管我找到了答案這樣回答這個問題,我找不到我的問題的確切答案:有沒有辦法改變C#中的.NET URL顯示屬性?

我在.NET中的代碼獲取信息並實質上創建一個字符串,該字符串是gridview中PDF文件的URL。這裏是一些有問題的代碼:

<a href='<# string.Concat("folder/", (Eval("user_account)), "/", (Eval("name")), ".pdf' target='_blank")%>'> 

我知道這個代碼的工作原理。我已經測試過了,它會按照它應該顯示的方式顯示PDF。我的問題是:有沒有辦法以某種方式切換這個「關」這麼說?我試圖關閉超鏈接部分,因此如果用戶單擊它,它不會將用戶引導到任何東西,但只在某些情況下。下面是我不希望它顯示超鏈接的一種情況。此代碼位於的RowDataBound方法:

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
if (Message.ToString() == "Flag") 
{ 
lblError.Text = "Testing error message."; 
//What else needs to go here to not display the URL under these conditions? 
} 
} 

我還測試此代碼,和顯示的標籤錯誤消息時在數據庫中的PDF文件中的一個具有該標誌設置爲「標誌」。但是,隨着這段代碼,我還需要PDF來不顯示或有超鏈接可用。我不確定這是否可行,或者是否有更好的解決方案。

任何想法將不勝感激。謝謝。

+1

要麼在這些情況下不創建超鏈接或將其設置爲空字符串。你嘗試過嗎? – CodingYoshi

+0

你可以把它變成一個LinkBut​​ton,驗證在服務器上,然後重定向到PDF – hardkoded

+0

@CodingYoshi我沒有想到這一點。但是有沒有辦法通過C#端將.NET端的超鏈接改爲空字符串? – JCunning

回答

0

嘗試添加到您的html頁面此id="linkid" runat="server"

<a id="linkid" runat="server" href='<# string.Concat("folder/", (Eval("user_account)), "/", (Eval("name")), ".pdf' target='_blank")%>'> 

然後在你的Code Behind

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
if (Message.ToString() == "Flag") 
{ 
lblError.Text = "Testing error message."; 
//What else needs to go here to not display the URL under these conditions? 
    linkid.Visible = false; 
} 
} 

假設你有一個循環的網格控制下拉控制。

DropDownList drp = (DropDownList)gridid.Rows[i].Cells[1].FindControl("drpcontrolid"); 
drp.Visible = false 
+0

第一部分可能工作。但我沒有下拉列表 – JCunning

+0

是的,這只是一個關於如何管理網格控制的例子。 –

0

你可以在你的代碼後面的gridview中訪問幾乎任何東西,但你需要首先獲取它的引用。

一種方法是直接在gridview中引用單元格。細胞計數在它們被添加到GridView從0開始。所以順序,假設你的是一個9號在你的數據行...

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    e.Row.Cells[8].Text = "......" 
} 

一個你有提到你幾乎可以做電池很多你想要的東西。您可以使用.Text屬性添加,刪除,附加文本。您還可以使用.Controls集合向其添加控件。

+0

這很簡單。但對於.Controls集合或任何集合,是否有一種方法可以簡單地刪除鏈接,但保留其他所有內容?我仍然希望文字是一樣的,只是想刪除鏈接。 – JCunning

+0

當然。您需要獲得對該控件的引用,然後將其刪除。 – John

+0

如果您將鏈接設爲HyperLink或其他服務器控件,會更容易。看看@reds的答案,找到一個控件的方法。假設您將鏈接更改爲HyperLink:HyperLink h =(HyperLink)gridid.rows [i] .cells [1] .FindControl(「myhyperlink」); if(h!= null)gridid.rows [i] .cells [1] .Cont5rols.Remove(h); – John

相關問題