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")应该可以实现吧!
[解决办法]
[解决办法]
在模板列中加入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
[解决办法]
楼主写的不错,粗略看过
[解决办法]