只是知道 有个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>