从GridView中的2列动态生成超链接

时间:2011-10-17 21:48:01

标签: asp.net entity-framework gridview hyperlink

我希望我能清楚地解释一下:

我有一个只显示EntityDataSource的ID和Name字段的GridView。

我想添加第三列,其中包含与每个ID对应的动态生成的超链接。

但是,这些超链接的导航只能通过连接与ID对应的其他两个字段(未显示)来获得。

假设我的DataSource有以下数据:

[ID] [Name] [Path] [FileName]
 1    ABC    path1  file1
 2    XYZ    path2  file2

我希望看到以下gridview,其超链接构造为:

|ID | NAME | Hyperlink      |             
----------------------------|                
 1  | ABC  | path1/file1.pdf|
 2  | XYZ  | path2/file2.pdf|

如何从2列构建超链接?


我正在做一个ASP.NET Web表单应用程序,实体类是从数据库中反向设计的。但是,我向部分类添加了只读属性。但是我无法访问它。这是我添加到我的实体类

的内容
public partial class MyEntity 
{ 
   public string FilePath 
   { 
      get { return string.Format("{0}/"{1}.pdf", this.FileName, this.FilePath); } 
   } 
} 

我是否需要在其他地方添加任何代码才能访问此只读属性?

2 个答案:

答案 0 :(得分:4)

在后面的代码中使用这样的东西:

protected string GetLink(object oPath, object oFileName) {
    return string.Format("~/{0}/{1}.pdf", oPath.ToString(), oFileName.ToString());
}

并在gridview列的aspx页面中,使用:

<asp:TemplateField><ItemTemplate>
    <asp:HyperLink ID="h1" runat="server" NavigateUrl='<% GetLink(Eval("Path"), Eval("FileName")) %>'>Download!</asp:HyperLink>
</ItemTemplate></asp:TemplateField>

答案 1 :(得分:3)

如果你想要比ahmad molaie建议更多的灵活性,你可能想看看这个技巧:http://www.tomot.de/en-us/article/7/asp.net/gridview-overview-of-different-ways-to-bind-data-to-columns