GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值.报错:指定的参数已超出有效值的范围。参数名: index

 

当我们在GridView中,偷懒,直接绑定数据库返回的 datatable的时候,用  HyperLinkField  的 DataNavigateUrlFields 来绑定数据库的字段,并且用 DataNavigateUrlFormatString 来显示url链接是很方便的。

如果是要绑定datatable里面的2个字段,则是把 DataNavigateUrlFields 后面的值用逗号分开 DataNavigateUrlFields=“UserId,QQNumber” DataNavigateUrlFormatString='List.aspx?ID={0}&qq={1}'

<asp:GridView ID="GVTeacher" runat="server" >
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="UserId" DataNavigateUrlFormatString='List.aspx?ID={0}' DataTextField="老师名称" Target="show" HeaderText="老师名称"/>
<asp:BoundField DataField="回答总数" HeaderText="回答总数" />
</Columns>
</asp:GridView>

但是如果我们想在超链接里面,写一个非数据库的字段的值呢?或者是写自己定义的一个变量的值呢?

例如:下面这个超级链接,他的绑定数据库的字段是 “学生名称”,但是这个URL 并没有指定(也就是没有写 DataNavigateUrlFields 和 DataNavigateUrlFormatString)

如果我们的URL既想用到数据库里面的值,又想用到自己的变量,怎么来做?

这个时候需要在 GridView上 加上行事件,onrowdatabound="GVStudent_RowDataBound"

<asp:GridView ID="GVStudent" runat="server" BackColor="White" BorderColor="White"
Visible="false" onrowdatabound="GVStudent_RowDataBound">
<Columns>
<asp:HyperLinkField DataTextField="学生名称" Target="show" HeaderText="学生名称"/>
<asp:BoundField DataField="提问总数" HeaderText="提问总数" />
</Columns>
</asp:GridView>

然后在后台的CS上,加上以下代码

protected void GVStudent_RowDataBound(object sender, GridViewRowEventArgs e)
{
//this.GVStudent.EditIndex != e.Row.DataItemIndex
//这一句话是为了防止报错
//异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index
if (e.Row.RowType == DataControlRowType.DataRow && this.GVStudent.EditIndex != e.Row.DataItemIndex)
{
DataRowView DDR = e.Row.DataItem as DataRowView; HyperLink temp = e.Row.Cells[0].Controls[0] as HyperLink;
if (temp!=null)
{
temp.NavigateUrl = string.Format(@"StudentList.aspx?ID={0}&start={1}&end={2}", DDR["UserId"], txtStart.Text, txtEnd.Text);
} }
}
 

GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值的更多相关文章

  1. hadoop的自定义数据类型和与关系型数据库交互

    最近有一个需求就是在建模的时候,有少部分数据是postgres的,只能读取postgres里面的数据到hadoop里面进行建模测试,而不能导出数据到hdfs上去. 读取postgres里面的数据库有两 ...

  2. MVC路由探寻,涉及路由的惯例、自定义片段变量、约束、生成链接和URL等

    引子 在了解MVC路由之前,必须了解的概念是"片段".片段是指除主机名和查询字符串以外的.以"/"分隔的各个部分.比如,在http://site.com/Hom ...

  3. Xcode 8:在 Active Compilation Conditions 中自定义环境变量

    来源:没故事的卓同学 链接:http://www.jianshu.com/p/96b36360bb2d 在Xcode 7我们在 OTHER_SWIFT_FLAGS中配置环境变量.但是有一个不爽的地方就 ...

  4. XCode 设置自定义环境变量

    XCode 设置自定义环境变量 Product -> Scheme -> Edit Scheme -> 之后设置环境变量.

  5. Qt+QGIS二次开发:自定义类实现查询矢量数据的属性字段值(图查属性)

    在GIS领域,有两种重要的查询操作,图查属性和属性查图. 本文主要介绍如何在QGIS中通过从QgsMapToolIdentify中派生自定义类实现查询矢量数据的属性字段值(图查属性). 重点参考资料: ...

  6. 自学Linux Shell6.2-用户自定义环境变量

    点击返回 自学Linux命令行与Shell脚本之路 6.2-用户自定义环境变量 1.设置局部用户定义变量 一旦启动bash shell(或者执行一个shell脚本),你就能创建这个shell进程可见的 ...

  7. OpenShift 自定义 OPENSHIFT_DOCUMENT_ROOT 变量,替换网站根目录路径!

    OpenShift 自定义 OPENSHIFT_DOCUMENT_ROOT 变量,替换网站根目录路径! 预先定义的子目录 :)     DIY: DocumentRoot=${OPENSHIFT_RE ...

  8. Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法

    Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法 一丶ORM常用字段 ...

  9. ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】

    提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了 ...

随机推荐

  1. IIS 7.5 配置 php 5.4.22 链接 sql 2008(用PDO链接数据库)

    最近在接触PHP这块,关于在wndows系统下的php配置,虽然网上已经很多文章,但有时候有些配置找起也麻烦,所以分享给大家. 一.php 5.4.22 下载地址 http://windows.php ...

  2. python 输出时间

    import datetime print(datetime.datetime.now().time())

  3. javascript debugger

    打开调试工具,刷新,可以看到脚本被暂停 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  4. Java中代码点与代码单元(转)

    摘要 本文介绍 Java 平台支持增补字符的方式.增补字符是 Unicode 标准中代码点超出 U+FFFF 的字符,因此它们无法在 Java 编程语言中描述为单个的 16 位实体(例如char数据类 ...

  5. vnc viewer 点击system 卡死现象

    转自:http://zhangjunli177.blog.163.com/blog/static/1386073082012103052527557/ VNC viewer desktop dead ...

  6. 雷林鹏分享:Ruby XML, XSLT 和 XPath 教程

    Ruby XML, XSLT 和 XPath 教程 什么是 XML ? XML 指可扩展标记语言(eXtensible Markup Language). 可扩展标记语言,标准通用标记语言的子集,一种 ...

  7. access_token和微信服务地址的获取

    access_token的获取: //获取微信服务器地址:

  8. RabbitMQ的几种工作模式

    maven: <dependencies> <!-- RabbitMQ的客户端 --> <dependency> <groupId>com.rabbit ...

  9. 【转】socket 通信简介

    转自:http://blog.csdn.net/xiaoweige207/article/details/6211577/ “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是 ...

  10. 软件工程firstblood

    https://github.com/happyeven/WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的 ...