首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-04-19 
GridView 中 加入超链接的问题。只是知道 有个HyperLinkField 这个东西, 但看了几个例子,感觉都不是很清晰。

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> 


[解决办法]

HTML code
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">    <Columns>         <asp:HyperLinkField DataNavigateUrlFields="WebSite"             DataNavigateUrlFormatString="http://www.{0}.com" DataTextField="WebSite" HeaderText="WebSite" />         <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />        <asp:BoundField DataField="Country" HeaderText="Country" SortExpression="Country" />    </Columns></asp:GridView><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=.;Initial Catalog=master;Integrated Security=True" ProviderName="System.Data.SqlClient" SelectCommand="select * from test"></asp:SqlDataSource>
[解决办法]
formatString 就可以咯 具体自己试嘛
可以不写代码 直接在属性里面设置 'http://www.{0}.com/'
{0}表示你的字段值
[解决办法]
C# code
public DataTable GetTable(string[,] siteurl)    {        DataTable dt = new DataTable();        dt.Columns.Add("WebSite", typeof(string));        dt.Columns.Add("Description", typeof(string));        dt.Columns.Add("Country", typeof(string));        for (int i = 0; i < siteurl.GetLength(0); i++)        {            int j = 0;            DataRow row = dt.NewRow();            row["WebSite"] = siteurl[i, j++];            row["Description"] = siteurl[i, j++];            row["Country"] = siteurl[i, j];            dt.Rows.Add(row);        }        return dt;    }
[解决办法]
你直接在绑定字段上加<a href="..."><a/>也是行的
[解决办法]
参考代码:
C# code
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){  if (e.Row.RowType == DataControlRowType.DataRow)  {      strrole = "UserManaging.aspx?sid=" + sid + "&un=" + username + "&pagenum=" + pagenum + "&num=one&is=";     for (int i = 0; i < e.Row.Cells.Count; i++)                    {                        if ((e.Row.Cells[i].Text != "") && (i == 5) && (e.Row.Cells[i].Text != null))                        {                            str = e.Row.Cells[i].Text;                            e.Row.Cells[i].Text = devidefunction.cutStr(e.Row.Cells[i].Text, 5);                            e.Row.Cells[i].Text = "<a href='" + strurl + "' style='cursor:hand;' title='" + str + "  [点击可以查看单位详情]' id='see2' target='_self'>" + e.Row.Cells[i].Text + "</a>";                        }                    }  }}
[解决办法]
把列转换成模板相对最简单。
hyperlinkfield主要用来页面间传值吧
[解决办法]
回帖已经很全面,友情UP
[解决办法]
UP
[解决办法]
up
[解决办法]
楼主写的不错,粗略看过
[解决办法]
探讨


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

热点排行