2017-09-24 75 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

相关问题