当前位置: 代码迷 >> ASP.NET >> GridView 中 加入超链接的有关问题
  详细解决方案

GridView 中 加入超链接的有关问题

热度:8557   发布时间:2013-02-25 00:00:00.0
GridView 中 加入超链接的问题。
只是知道 有个HyperLinkField 这个东西, 但看了几个例子,感觉都不是很清晰。 现在想写个demo 遇到问题。
数据源 通常为数据库中的表 这里我用数组代替。

C# code
string[,] siteurl =        {            {"google","guge","America"},            {"baidu","baidu","China"},            {"yahoo","yahu", "America"}        };


我现在想的是, 怎样能 在 gridview中显示的时候, 让 "google" 的就链接到 www.google.com.cn 上, "baidu" 就链接到www.baidu.com 上 ……
代码最好都在后台写。
另外,我试着把HyperLink放到 DataTable 中, 然后 GridView 绑定到 DataTable 中, 怎么写都不对啊。请大家指教。
C# code
DataTable GetTable(string [,] siteurl)    {        DataTable dt = new DataTable();        dt.Columns.Add("WebSite", typeof(HyperLinkField));        dt.Columns.Add("Description", typeof(string));        dt.Columns.Add("Country", typeof(string));                HyperLinkField hlf = new HyperLinkField();                        for (int i = 0; i < siteurl .GetLength(0) ; i++)        {            int j = 0;            DataRow row = dt.NewRow();            hlf.DataNavigateUrlFormatString = "www." + siteurl[i, j++] + ".com";            row["WebSite"] =  hlf;            row["Description"] = siteurl[i, j++];            row["Country"] = siteurl[i, j];            dt.Rows.Add(row);        }        return dt;    }


------解决方案--------------------------------------------------------
将GridView中新增一列并转换成模板列,然后插入一个HyperLink,在编辑DataBindings中的NavigateUrl一项中添加:Bind("URL")应该可以实现吧!
------解决方案--------------------------------------------------------
探讨
将GridView中新增一列并转换成模板列,然后插入一个HyperLink,在编辑DataBindings中的NavigateUrl一项中添加:Bind("URL")应该可以实现吧!

------解决方案--------------------------------------------------------
在模板列中加入HyperLink,然后指定其NavigateUrl就可以咯(前台后台都可以设置)
------解决方案--------------------------------------------------------
1楼说的方法可行,楼主可以试试。有什么问题了。再发上来。我以前也做过这个。

------解决方案--------------------------------------------------------
C# code
    protected void GridView1_DataBound(object sender, EventArgs e)    {            foreach (GridViewRow gr in GridView1.Rows)            {                HyperLink hlshowread = (HyperLink)gr.FindControl("HyperLink2");                hlshowread .NavigateUrl = "http://www.g.cn/";            }}
------解决方案--------------------------------------------------------
用一个超级‘笨’的方法。

定义一个SiteUrl的类,三个字段,三个属性。
C# code
public class SiteUrl{        private string webSite;        public string WebSite        {            get { return webSite; }            set { webSite = value; }        }        private string description;        public string Description        {            get { return description; }            set { description = value; }        }        private string country;        public string Country        {            get { return country; }            set { country = value; }        }}
------解决方案--------------------------------------------------------
这个是直接连接打开另一个页面。楼主改一下就行的。
C# code
<asp:TemplateField FooterText="卡有效期" HeaderText="卡有效期" SortExpression="cardvaliddate">                                <ItemTemplate>                                    <asp:linkbutton ID="Label1" runat="server" Text='<%# Bind("cardvaliddate") %>' ForeColor="#00C0C0"                                     OnClientClick=<%# "window.open('UpdateCardvalidDate.aspx?CardNo=" + Eval("PeoCurrCardNo") + "','_blank','width=420,height=250,left=300,top=280')" %>></asp:linkbutton>                                </ItemTemplate>                            </asp:TemplateField>