CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记

一、不管是Repeater还是ListView控件,e.Item.DataItem总是习惯性的出现。那么e.Item.DataItem是什么?

他代表了当前正在被“处理”的行。这个“行”只包含数据,不包含控件。什么意思呢?如下:

   <asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource1" OnItemDataBound="Repeater1_ItemDataBound"><HeaderTemplate><table></HeaderTemplate><ItemTemplate><tr><td><%#Eval("part_code") %></td><td><asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("stock_num") %>'></asp:TextBox></td></tr></ItemTemplate><FooterTemplate></table></FooterTemplate></asp:Repeater>

注:以上代码,数据库中的表名称为 tbl_stock_dtl

就是说e.Item.DataItem只包含part_code,stock_num这样的数据字段,不包含类似TextBox等控件。因此,我们可以在ItemDataBound事件里面通过把e.Item.DataItem转换为相应的类型来获取ItemTemplate里当前对应的数据值,然后进行一些“目的性”的处理。

但是,因为我们使用数据源的种类不同,所以e.item.DataItem转换的类型也变得不唯一。

1、使用DataSet绑定数据源时,用

DataRowView view = (DataRowView)e.Item.DataItem;
var stock_Row=(XXX.XXX.tbl_stock_dtlRow)view.Row;
if(stock_Row.stock_num>0){XXXXX;}

个人不太喜欢这种方式!

2、使用LinqToSql

大家都知道,在Linq的.dbml文件中,编译器把表映射为一个类,其中每条记录就是一个类对象。如下代码,如果库存(stock_num)为0,就把textBox的边框变红。

 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e){if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)//判断行的类型。{tbl_stock_dtl drvRow= (tbl_stock_dtl)e.Item.DataItem;//把行里面的数据转换为dbml文件中类的相应对象if (drvRow.stock_num==00){TextBox tb = (TextBox)e.Item.FindControl("TextBox1");//模板中的控件不能直接通过ID查找,切记。tb.BorderColor = System.Drawing.Color.Red;}}}

两种方法,没有好坏之分!你喜欢什么酒用什么。

注释图:

ASP.net的ItemDataBound事件与LinqToSql数据源关于e.Item.DataItem的类型相关推荐

  1. C# 在Repeater 的ItemDataBound 如何转换e.Item.DataItem 的类型

    1.使用DataSet和DataTable绑定数据源时,用 DataRowView view = (DataRowView)e.Item.DataItem; 2.DataReader绑定数据源时,用 ...

  2. 数据源绑定控件的Row/ItemDataBound事件

    呈现 GridView 控件之前,该控件中的每一行必须绑定到数据源中的一条记录.将某个数据行(用 GridViewRow 对象表示)绑定到 GridView 控件中的数据以后,将引发 RowDataB ...

  3. 遍历Repeater与ItemDataBound事件发现的几个问题。

    1.如果用DataReader作为Repeater的数据源,ItemDataBound事件里通过FindControl找到控件 2.foreach遍历Repeater时,使用FindContrl需要判 ...

  4. Repeater控件的ItemDataBound事件

    Repeater控件的ItemDataBound事件:在项被绑定数据后触发. 下面的例子来自msdn,不过我把前台和后台分开了. 前台是: View Code <%@ Page Language ...

  5. 解决C# Repeater内嵌Repeater 数据绑定,以及第二次层Repeater的ItemDataBound事件怎么处理...

    呵呵,好久没写了,继续上问题,以后我写的都是我遇到的问题以及群里相关人士的问题,比较棘手的贴在这里(顺便打个广告群号115180614,.net技术群,混群的勿扰,群主江湖,就说老男孩介绍就行了.). ...

  6. ASP.NET页面——页面事件

    上篇文章写到ASP.NET页面的生命周期.详见:http://www.cnblogs.com/zhaozhan/archive/2009/06/21/1507740.html. Page_PreIni ...

  7. 通过ItemDataBound事件操作数据控件中嵌套的其他控件

    首先,需要在控件中声明ItemDataBound事件. 其次,在code文件中实现事件. 再次,代码示例如下. <span style="font-size:14px;"&g ...

  8. Repeater.ItemDataBound事件

    当项被数据绑定到 Repeater 控件后,将引发ItemDataBound事件.此事件为您提供了在客户端显示数据项之前访问该数据项的最后机会.当引发此事件后,该数据项不再可用. 1. aspx文件 ...

  9. 浅析ASP.NET回车提交事件[转]

    ASP.NET回车提交事件其实说到底并不是ASP.NET 的编程问题,却是关于html form 中的submit 按钮就是如何规划的具体讨论. 也可归于ASP.NET编程的一部分,那么ASP.NET ...

最新文章

  1. 11个让你吃惊的Linux终端命令
  2. Beaker:一个基于Electron的点对点Web浏览器
  3. spring源码分析之spring-core总结篇
  4. VUE 携手神策数据,数据驱动短视频质效双升级
  5. syslog数据接收并处理
  6. 打造自己的网络游戏[1]-Muddery安装与启动
  7. js等待当前线程内ajax完成,理解javascript定时器中的单线程
  8. 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
  9. JavaScript异步编程【下】 -- Generator、Async/await
  10. C++重要知识点小结---3
  11. python修改pip源脚本_修改python的pip源为国内源
  12. word转html,word转pdf
  13. 彻底卸载vscode Linux,Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)
  14. 椭圆曲线上的加密算法——MV(Menezes-Vanstone)算法的具体实现
  15. wpl计算方法_用于计算加权路径长度(WPL)的C ++二叉树算法
  16. java从键盘输入任意一组数据存入数组中统计非负数个数及非负数个数
  17. 【autojs】Auto.js Pro免root打开无障碍服务(需adb授权,重启手机不失效)脚本源代码
  18. 0085 开头的电话拦截方法(小米手机有效)
  19. 红帽linux挂载光盘_linux挂载光盘
  20. deficit记忆_一万单词谐音记忆

热门文章

  1. iCMS前台存储型XSS漏洞
  2. 是面试官放水,还是公司实在是太缺人?这都没挂,华为原来这么容易进...
  3. 2022-2028全球航海灯行业调研及趋势分析报告
  4. css3中的scroll-behavior属性 让滚动条可以平滑滚动动画
  5. 【数据结构】二叉树的非递归遍历
  6. 手游盒子开发之iOS签名区别
  7. iOS Airplay Screen Mirroring 投屏技术详解
  8. d2-admin-路由菜单
  9. 如何将验证码添加到Android应用
  10. 计算机文字录入技能竞赛,文字录入技能竞赛方案