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. python 堆栈

    class Node: #堆栈链结节点的声明 def __init__(self): self.data= #堆栈数据的声明 self.next=None #堆栈中用来指向下一个节点 top=None ...

  2. 用 profvis 进行性能分析

    Rprof( ) 函数提供了有用的信息帮助我们找到代码瓶颈,进而提升代码性能.RStudio 也发布了一个增强版的分析工具 profvis( ),它还提供了用于分析 R 代码的交互式可视化功能(htt ...

  3. K-Means & Sequential Leader Clustering

    2017-12-31 19:08:37 k-平均算法源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域.k-means的目的是:把样本划分到k个聚类中,使得每个点都属 ...

  4. c#只读字段和常量的区别,以及静态构造函数的使用 .

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...

  5. 牛客网——G送分了(py)

    链接:https://www.nowcoder.net/acm/contest/74/G来源:牛客网 题目描述 杭州人称傻乎乎的人为62,而嘟嘟家这里没有这样的习俗. 相比62,他那里的人更加讨厌数字 ...

  6. JavaScript学习总结(二十二)——JavaScript屏蔽Backspace键

    今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<input type="text" readonly=&qu ...

  7. MD5加密源码!

    import java.security.*; class MD5{ public final static String MD5(String s){ char hexDigits[] = {'0' ...

  8. laravel框架中使用Validator::make()方法报错

    在控制器中用到了Validator::make(),它默认是use Dotenv\Validator; 但这样会出现 FatalErrorException错误 call to undefined m ...

  9. 对象存储在什么地方(java编程思想)

    用引用操作对象.创建了一个引用,需要进行初始化(与事物进行关联),才能正常使用.new将引用于对象进行关联 对象存储到什么地方? 程序运行时,对象是怎么进行放置安排的呢?特别是内存是怎么分配的呢?对这 ...

  10. 知名第三方编译版tete009 Firefox 24.0

    Firefox除了官方版本上还有许多由爱好者自己编译修改的第三方版本. 其中 tete009 是十分流行的一个版本,目前tete009 Firefox 24.0 版本发布. tete009版Firef ...