asp.net后台或前端获取TemplateField绑定的文本
程序员文章站
2022-04-09 22:13:28
GridView中使用最多的一个是BoundField,还有一个是TemplateField 这两个各有其特点,BoundField的话比较简单,设置好DataField、HeaderText等就okay了。但是有时候用TemplateField 的话,交互性就更多了。 这次的项目中,对方要我们做二 ......
gridview中使用最多的一个是boundfield,还有一个是templatefield
这两个各有其特点,boundfield的话比较简单,设置好datafield、headertext等就okay了。
但是有时候用templatefield 的话,交互性就更多了。
这两个各有其特点,boundfield的话比较简单,设置好datafield、headertext等就okay了。
但是有时候用templatefield 的话,交互性就更多了。
这次的项目中,对方要我们做二级表头的表格,就用到了templatefield ,代码格式如下:
``
```
<asp:templatefield headerstyle-width="250px">
<headertemplate>
<table width="100%" align="center">
<tr>
<td colspan="3" 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 链接,可以点击后查看图片和视频~~
<asp:templatefield headerstyle-width="250px">
<headertemplate>
<table width="100%" align="center">
<tr>
<td colspan="3" 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来获取
```
$(document).ready(function() {
$('select').addclass("form-control");
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;
}
```
效果:
$(document).ready(function() {
$('select').addclass("form-control");
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绑定的文本
首先要说的是,其实一开始,我的描述是直接放在`<td></td>`中的,但是这样后台虽然可以取到文本,但是无法使用tooltip,也不能对其属性text赋值,后来用 `<td><span title=""><%# eval("data1")%></span></td>` ,这样可以在前端(就是上面的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[6].tostring().trim().length > 12) //描述的文字长度大于12的时候
{
string dis = ((system.data.datarowview)(e.row.dataitem)).row.itemarray[6].tostring().trim();
label aaa = e.row.findcontrol("label1") as label;
aaa.tooltip = dis;
aaa.text = dis.substring(0, 11) + "...";
}
}
}
```
((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; 再设置属性就行了。(=.
字数限制之后,鼠标放置--悬浮显示完整文字
上一篇: 微信小程序 页面跳转事件绑定的实例详解