GridView中使用最多的一个是BoundField,还有一个是TemplateField
这两个各有其特点,BoundField的话比较简单,设置好DataField、HeaderText等就可以了。
但是有时候用TemplateField 的话,交互性就更多了。
这次的项目中,对方要我们做二级表头的表格,就用到了TemplateField ,代码格式如下:
```

<asp:TemplateField HeaderStyle-Width="250px">
<HeaderTemplate>
<table width="100%" align="center">
<tr>
<td colspan="" width="100%" align="center">
详细信息
</td>
</tr>
<tr>
<td width="70%" align="center">
描述
</td>
<td width="15%" align="center">
图片(张)
</td>
<td width="15%" align="center">
视频(段)
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table width="100%">
<tr>
<td width="70%" align="center">
<asp:Label id="Label1" runat="server" Text=<%# Eval("data1"/asp:Label>
</td>
<td width="15%" align="center">
<asp:HyperLink id="HyperLink1 Text=<%# Eval("data2"%> ForeColor="#00d3d4" NavigateUrl='' runat="server" title='查看' CssClass="hylink"></asp:HyperLink>
</td>
<td width="15%" align="center">
<asp:HyperLink id="scanVideo" Text=<%# Eval("data3"%> ForeColor="#00d3d4" NavigateUrl='' runat="server" title='查看' CssClass="hylink"></asp:HyperLink>
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle Width="250px"></HeaderStyle>
</asp:TemplateField>

```
通过在后台控制从数据库中查出数据之后,对应的字段绑定上数据之后,在浏览器上的显示:
其中图片和视频是HyperLink 链接,可以点击后查看图片和视频~

 
  •  - 前端获取TemplateField绑定的文本
但是我希望,只有图片和视频的数目是大于0的时候才是蓝绿色,且可以点击,为0的时候就像普通的绑定一样。这里用前端js来获取templateField绑定的值
$(document).ready(function() {
var gdview = document.getElementById("GridView1");
var GridView1RowsLength = getTableRowsLength("GridView1");
for (var j = 1; j < GridView1RowsLength; j++) {
var HTML = gdview.rows[j].cells[6].children[0];//获取到TemplateField这一列,我这里是cells[6]
var photoNum = HTML.rows[0].cells[1].textContent;
var vedioNum = HTML.rows[0].cells[2].textContent;
if (photoNum == 0) {
HTML.rows[0].cells[1].children[0].href = "#";
HTML.rows[0].cells[1].children[0].title = "";
HTML.rows[0].cells[1].children[0].style.color = "rgb(51, 51, 51)";
}
if (vedioNum == 0) {
HTML.rows[0].cells[2].children[0].href = "#";
HTML.rows[0].cells[2].children[0].title = "";
HTML.rows[0].cells[2].children[0].style.color = "rgb(51, 51, 51)";
}
}
}); function getTableRowsLength(id) {
var mytable = document.getElementById(id);
return mytable.rows.length;
}

效果:


为0的鼠标放置上去不会有title显示,点击也不会有反应了
 
 
  •  - 后端获取TemplateField绑定的文本

前面的描述文字,一开始对方给的模板都是10字以内的,所以没有做特殊处理,后来对方提及描述文字一般是50字左右,那当然不可能直接这么多文字都显示出来的,

占位置还很丑,所以就想到字数超过固定数目之后,之后的用...表示,但是可以通过鼠标放置在当前单元格上的时候,悬浮显示全部描述文字。这里用后台控制:
首先要说的是,其实一开始,我的描述是直接放在`<td></td>`中的,但是这样后台虽然可以取到文本,但是无法使用ToolTip,也不能对其属性Text赋值,后来用

<asp:Label id="Label1" runat="server" Text=<%# Eval("data1"/asp:Label>

,这样可以在前端(就是上面的js代码中)控制,显示我想要的效果,但是是前端强制生成的,因为绑定在gridview上的数据还是很长段的文字,所以页面刚刷新的时候会

看到很长段的描述文字,闪了一下,才会变成想要的“部分描述文字”+...,这样,所以我还是希望在数据绑定的时候就已经处理好这些在网上找了很久,并没有找到方法,
只能自己琢磨了
代码如下:
   

    /// <summary>
/// 当Gridview的每行数据绑定的时候触发的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (((System.Data.DataRowView)(e.Row.DataItem)).Row.ItemArray[].ToString().Trim().Length > ) //描述的文字长度大于12的时候
{
string dis = ((System.Data.DataRowView)(e.Row.DataItem)).Row.ItemArray[].ToString().Trim();
Label aaa = e.Row.FindControl("Label1") as Label;
aaa.ToolTip = dis;
aaa.Text = dis.Substring(, ) + "...";
}
    }
  }

((System.Data.DataRowView)(e.Row.DataItem)).Row.ItemArray[6]这个是怎么得到的呢,就是自己一开始用的是e.Row.Cells[]但是获取不到,后来使用((DataBoundLiteralControl)row.Cells[index].Controls[0]).Text.Trim()也有点小问题,后台调试的时候,获取e.row,找到了整行的数据,在一层一层找到描述的单元格信息,然后直接通过复制表达式得到的。

然后就完成了,其实之前的俩个数字也是完全可以用后端的办法的,一样获取到文本,做判断,HyperLink PhotoNum = e.Row.FindControl("HyperLink1") as HyperLink; 再设置属性就行了。(=.
字数限制之后,鼠标放置--悬浮显示完整文字
 

asp.net后台或前端获取TemplateField绑定的文本的更多相关文章

  1. asp.net后台向前端输出js脚本的三种方法

    //这个方法最快,因为它会输出到html标签之前 Response.Write("<script type='text/javascript'>alert('这个最快')< ...

  2. ASP.NET WebForm中前台代码如何绑定后台变量

    转载自 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有& ...

  3. asp.net后台获取路径的各种方法归纳

    asp.net后台获取路径的各种方法归纳   1.Request.CurrentExecutionFilePath    获取当前请求的虚拟路径,不同于 FilePath,差别在于如果请求已在服务器代 ...

  4. js前端对后台数据的获取,如果是汉字则需要添上引号

    js前端对后台数据的获取,如果是汉字则需要添上引号

  5. asp.net后台获取html控件的值

    1.asp.net后台获取前台type=text控件的值 前台:<input name="txtName" class="username" type=& ...

  6. Asp.net中从后台中如何获取html控件

    比如定义html的文本框如下: <input  type="text" onclick="fun()" id="htmlTxtDate" ...

  7. ASP.NET MVC 富文本Ueditor编辑 后台传值前端乱码解决方案

    只是将当前内容String当成Html插入,我想是跟数据类型转换差不多 //把内容赋值给ueditor var ue = UE.getEditor('editor');//实例化 ue.ready(f ...

  8. 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

    2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...

  9. 获取GRIDVIEW中的TemplateField显示的文本值

    GRIDVIEW中数据源绑定后的属性绑定我一般采取2种办法 一个是BoundField,只要设置DataField的对应属性名即可: 如: <asp:BoundField HeaderText ...

随机推荐

  1. layer.msg 弹出不同的效果的样式

    icon 1到6的不同效果 layer.msg(,time:, shift: });//一个勾 layer.msg(,time:, shift: });//一个叉 layer.msg(,time:, ...

  2. centos下如何开放某个端口?

    命令如下: firewall-cmd --permanent --add-port=/tcp (开放22端口) firewall-cmd --reload

  3. Xamarin图表开发基础教程(2)OxyPlot框架

    Xamarin图表开发基础教程(2)OxyPlot框架 OxyPlot图表设计 OxyPlot是一个基于.Net的跨平台图表库.该图表库也支持Xamarin应用开发.该组件支持多种类型的图表.本章将主 ...

  4. Android开发--IntentService的用法,你错过了什么

    Android开发--IntentService的用法,你错过了什么 . 本文链接:https://blog.csdn.net/smbroe/article/details/45009721 Inte ...

  5. ISO/IEC 9899:2011 条款6.4——词法元素

    6.4 词法元素 1.token(标记): keyword(关键字) identifier(标识符) constant(常量) string-literal(字符串字面量) punctuator(标点 ...

  6. idea 配置文件中文显示问题

    配置文件中的中文,有时候会显示异常,因此需要修改文件编码格式修改.下面红框位置需要勾选上.

  7. 软件定义网络基础---SDN的发展

    一:发展初期阶段--提出 架构.设计思想和实现技术的提出 二:发展中期阶段--企业加入,推动发展 三:SDN的发展趋势 (一)SD-DC SDN被大规模应用数据中心的服务器和设备部署运维,产生了软件定 ...

  8. Qt编写自定义控件62-探探雷达

    一.前言 随着移动互联网的盛行,现在手机APP大行其道,每个人的手机没有十几个APP都不好意思说自己是现代人,各种聊天.购物.直播.小视频等APP,有个陌生人社交的APP叫探探,本人用过几次,当然不是 ...

  9. 安卓 android studio 报错 All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com

    这个问题是Android studio升级到3.0之后,运行的时候会提示gradle要升级到3.5版本才能编译.于是我把我的gradle升级到了 gradle-4.1-milestone-1 版本,是 ...

  10. GWAS: 网页版的基因型填充(genotype imputation)

    在全基因组关联分析中,处理芯片数据时,必须走的一个流程就是基因型数据填充(imputation). 当然,如果你拿到的是全测序的数据,请忽略这一步. 下面直奔主题,怎么在网页版进行基因型填充. 1 进 ...