GridView实现超链接列和图片列,跳转页面并传递参数

原创 2015年06月26日 20:01:38
「注意!请勿私自转载!」

  最近在使用ASP.NET建设网站,需要解决如标题所示的问题,上网可以搜出很多答案。现在简单总结一下我的解决办法,方便各位取用,有任何疑问欢迎提出交流。
(注:使用VB语言。)

※为表格添加一列超链接列,每一项都指向特定的页面。
  由于不能逐个设定链接的地址(而且数据项多时这么做也不科学;或者使用数据库进行逐个设定),因此使用参数传递便可以链接到指定的目标页面。接下来以商品展示的页面为例介绍实现方法。

在aspx页面的body中插入如下代码:
<form id="form1" runat="server">
  <div align="center">
   <asp:GridView ID="GridView1" runat="server" DataKeyNames="SPID" 
	CellPadding="5" width="70%">
	<Columns>
	 <asp:HyperLinkField DataNavigateUrlFields="SPID" 
	DataNavigateUrlFormatString="GoodsDetail.aspx?SPID={0}" 
	HeaderText="链接" Text="查看详情" />
	 <%--创建超链接列,指定要传递的参数的数据源字段,并添加在目标页面后。--%>
	</Columns>
   </asp:GridView>
   <asp:SqlDataSource ID="SqlDataSource1" runat="server" ></asp:SqlDataSource>
  </div>
</form>

如果要传递多个参数,则这样修改:
<asp:HyperLinkField DataNavigateUrlFields="SPID,SPName" 
DataNavigateUrlFormatString="GoodsDetail.aspx?SPID={0}&SPName={1}" 
HeaderText="链接" Text="查看详情" />   
<%--指定两个参数,{0}表示选择第一个参数--%>

在对应的vb文件里或者在<script runat="server"></script>里面写入以下代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
	If Not IsPostBack Then
		Dim conn As New SqlConnection()
		Dim cmd As New SqlCommand()
		Dim objReader As SqlDataReader
		conn.ConnectionString = 
"Data Source =.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\GOODS.mdf;Integrated 
Security=True"  '数据库名称为GOODS
		conn.Open()
		cmd.Connection = conn
		cmd.CommandText = "Select SPID,SPName From SP"  
		‘使用SQL语句,显示SP表里SPID和SPName字段的所有记录
		objReader = cmd.ExecuteReader()
		GridView1.DataSource = objReader
		GridView1.DataBind()
		conn.Close()
	End If
End Sub

最后显示结果大概如下:
 链接  SPID SPName 
 查看详情  1 AAA 
 查看详情  2 BBB 
如果想把链接列放到最后一列或者改变字段的显示名字,改用Boundfield会很方便。(使用方法可看目标页面的设置)

※添加图片列。

目标页面的设置如下:
<form id="form1" runat="server">
  <div align="center">
	<asp:GridView ID="GridView1" runat="server" DataKeyNames="SPID"
 		CellPadding="5" AutoGenerateColumns="False">   
		<%--设置AutoGenerateColums可避免列重复出现--%>
		<Columns>
			<asp:BoundField DataField="SPID" HeaderText="编号" />
			<asp:BoundField DataField="SPName" HeaderText="名称" />
			<asp:BoundField DataField="Price" HeaderText="价格" 
				DataFormatString="{0:C}" />
			<asp:BoundField DataField="Brief" HeaderText="简介">
				<ItemStyle width="300" /> <%--设置此单元格的宽度--%>
			</asp:BoundField>
			<asp:ImageField DataImageUrlField="Image" HeaderText="商品图片">
				<ControlStyle Width="250" />  <%--设置图片的宽度--%>
			</asp:ImageField>
			</Columns>
	</asp:GridView>
	<asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource>
  </div>
</form>

需要在数据库表里的Image字段里写好要显示的图片的相对路径,若在上级的另一文件夹中,则可这样写:/img/pic.jpg
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If Not IsPostBack Then
	Dim conn As New SqlConnection()
	Dim cmd As New SqlCommand()
	Dim objReader As SqlDataReader
	conn.ConnectionString = "Data Source 	=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\GOODS.mdf;Integrated 	Security=True"
	conn.Open()
	cmd.Connection = conn
	cmd.CommandText = "Select SPID,SPName,Price,Brief,Image from SP Where SPID = @SPID"

	'在SQL语句里可以看出调用了传递过来的参数SPID
	Dim para As New SqlParameter("@SPID", SqlDbType.Int, 4) '设置参数
	cmd.Parameters.Add(para)
	cmd.Parameters("@SPID").Value = Request.QueryString("SPID").ToString() '获取参数
	objReader = cmd.ExecuteReader()
	GridView1.DataSource = objReader
	GridView1.DataBind()
	conn.Close()
  End If
End Sub

这样,在目标页面里,GridView就会根据不同的商品编号来显示相应的商品信息。效果大概如下:
 编号 名称  价格  简介  商品图片 
 1 AAA  ¥1  XXXXX  图片1 



版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Gridview控件的链接实现页面跳转并且传值

1.使用       是在绑定控件DataBind()方法执行时被执行,用于数据绑定 ,其中WIP_NO为数据库中的字段                        " ...
  • zdhlwt2008
  • zdhlwt2008
  • 2016年06月15日 14:26
  • 2081

GridView中的超链接

GridView中的超链接 GridView中的超级链接,可以设置一个模版列,放入超级链接的控件,设置绑定参数。 数据绑定方式有两种,如下示例: Eval方式     Bind方式 ...
  • thinkscape
  • thinkscape
  • 2007年10月29日 20:17
  • 671

GridView中的超级链接HyperLinkField

第一种方法: DataNavigateUrlFields,也就是gridview中的字段,DataNavigateUrlFormatString,就可以对字符串进行编辑 DataN...
  • dingdangxiaoma
  • dingdangxiaoma
  • 2010年08月23日 11:01
  • 10757

GridView详讲

GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现。(车延禄) GridView的主要新特性: 1.与DataSourc...
  • vajoy
  • vajoy
  • 2013年01月28日 09:50
  • 1164

GRIDVIEW内容详解

GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现。(车延禄) GridView的主要新特性:     1.与DataS...
  • zlwzlwzlw
  • zlwzlwzlw
  • 2013年11月18日 16:10
  • 3240

GridView跳转到另外一个页面2种方法

方法一(转载)                         OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_...
  • GINA620
  • GINA620
  • 2007年04月16日 11:52
  • 3829

GridView中动态添加模板列和其子控件集合

一、实施说明: 1 实施原因: 因为在做一个MOSS WebPart控件时候,遇到一个问题,如何选择需要导出的数据列; GridView的数据源是动态的,所以没有办法静态使用模板列,...
  • y29508968
  • y29508968
  • 2016年12月04日 11:09
  • 905

GridView实现超链接列和图片列,跳转页面并传递参数

总结GridView实现超链接列和图片列、跳转页面并传递参数的方法。
  • christychan
  • christychan
  • 2015年06月26日 20:01
  • 531

GridView详解

GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现。(车延禄) GridView的主要新特性:     1.与DataS...
  • wenchao_zhai
  • wenchao_zhai
  • 2015年05月22日 11:45
  • 937

GridView超链接字段的URL编码方法

今天升级一个老程序,其中有段代码感觉很奇怪,虽然是自己写的,但时间长了一时也记不得当时的想法。仔细看了看明白是为了解决URL编码问题采取的变通方法,鉴于当时的经验倒也可以理解。问题简单描述如下:在Gr...
  • gaofeng2000
  • gaofeng2000
  • 2015年06月18日 14:08
  • 1225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GridView实现超链接列和图片列,跳转页面并传递参数
举报原因:
原因补充:

(最多只允许输入30个字)