日期:2014-05-18  浏览次数:20401 次

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.