Repeater数据控件的两个重要事件ItemDataBound 和 ItemCommand
2023-09-11 14:14:14 时间
1 ItemDataBound:数据绑定的时候(正在进行时)发生。 2 ItemCommand :用来响应Item模板中的控件的事件。 如下代码 aspx代码: [html] view plain copy <asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource1" onitemcommand="Repeater1_ItemCommand" onitemdatabound="Repeater1_ItemDataBound"> <ItemTemplate> <span runat="server" id="span"> --------------------<asp:Button ID="addButon" CommandName="addButton" CommandArgument='<%#Eval("part_code") %>' runat="server" Text="库存+1" />-------------------<%#Eval("part_code") %>---------------<%#Eval("stock_num") %><br/><br/> </span> </ItemTemplate> </asp:Repeater> cs代码: [csharp] view plain copy //响应Item模板中控件的事件---------点击按钮,库存+1 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "addButton")//判断这个Item里哪个控件响应的这个事件 { string part_code = (string)e.CommandArgument;//获取Item传过来的参数 //下面是通过Linq修改数据(即:使库存+1) DataClasses1DataContext dc = new DataClasses1DataContext(); var rs = dc.tbl_stock_dtl.Select(r => r).Where(r => r.part_code == part_code); if (rs.Count() > 0) { foreach (tbl_stock_dtl t in rs) { t.stock_num += 1; } } dc.SubmitChanges(); Repeater1.DataBind();//强行刷新数据,就是说,库存+1后,立马显示新的数据。 } } //当浏览器显示一条记录的时候,响应的事件---------库存为零的背景变红 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { //判断Item的类型,因为Item有好几种:footer ,header ,Item.... if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { //把ItemData转换为对应的类对象 tbl_stock_dtl tsd = (tbl_stock_dtl)e.Item.DataItem; if (tsd.stock_num == 0) { //找到对应的控件,因为span是html的,所以,要加上runat=“server” HtmlGenericControl hgc = (HtmlGenericControl)e.Item.FindControl("span"); //为span动态添加一个属性:style,该属性的值为:background-color:red hgc.Attributes.Add("style", "background-color:red"); } } }
自己写的
前台:
<asp:Repeater ID="rp_Item" runat="server" OnItemDataBound="rp_ItemDataBound"> <ItemTemplate> <tr ondblclick="RowDbClick('');"> <td style="width: 3%; text-align: center;"> <input type="checkbox" value="<%#Eval("Id")%>" name="checkbox" /></td> <td style="text-align: center; width: 5%"><%=this.code++%></td> <td style="width: 10%; text-align: center;"><%#Eval("Title") %></td> <td style="width: 8%; text-align: center;"><%#Eval("AddUserName") %></td> <td style="width: 20%; text-align: center;"><%#Eval("Remark") %></td> <td style="width: 10%; text-align: center;"> <%#Eval("AddTime")%> </td> <td style="width: 8%; text-align: center;"><%# GetStatusNameByStatus(Eval("Status").ToString()) %></td> <td style="text-align: center; width: 8%;"> <a href="SpecialRectificationCheck_Detail.aspx?key=<%#Eval("Id")%>" target="_blank" onclick="GetId(this)" class="details" id="<%#Eval("Id")%>">详情<img id="attachFlag" runat="server" style="width:12px;height:12px;display:none" src="../../Themes/Images/32/239.png"/></a> </td> </tr> </ItemTemplate> <FooterTemplate> <% if (rp_Item != null) { if (rp_Item.Items.Count == 0) { Response.Write("<tr><td colspan='8' style='color:red;text-align:center'>没有找到您要的相关数据!</td></tr>"); } } %> </FooterTemplate> </asp:Repeater>
后台 :
protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DataRowView drv=(DataRowView)e.Item.DataItem; string id = Convert.ToString(drv["Id"]); DataTable dtAttach = _keyWorkDao.GetAttachmentByKey(id); if(dtAttach!=null&&dtAttach.Rows.Count>0) { HtmlImage aAttachFlag = ((HtmlImage)e.Item.FindControl("attachFlag")); aAttachFlag.Style["display"] = "normal"; } } }
前台 2:
<table class="grid tb-list-box" align="center" border="0" cellpadding="0" cellspacing="0"> <thead> <tr> <th style="width: 5%">序号</th> <th style="width: 10%; text-align: center;">添加人 </th> <th style="width: 10%; text-align: center;">上传时间 </th> <th style="width:auto; text-align: center;">附件 </th> </tr> </thead> <asp:Repeater ID="RptAttach" runat="server" OnItemDataBound="rp_ItemDataBound"> <ItemTemplate> <tr> <td style="width: 5%; text-align: center;"><%=CodeListForAttach++ %></td> <td style="width: 10%; text-align: center;" runat="server" id="addUserName"><%#Eval("AddUserName")%></td> <td style="width: 20%; text-align: center;"><%#Eval("AddTime")%></td> <td style="width: auto; text-align: center; text-align:left" runat="server" id="fileNames"></td> </tr> </ItemTemplate> </asp:Repeater> </table>
后台 2:
protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Object o = e.Item.DataItem; Type t = o.GetType(); System.Reflection.PropertyInfo pAddUserName = t.GetProperty("AddUserName", typeof(System.String)); System.Reflection.PropertyInfo pAddTime = t.GetProperty("AddTime", typeof(System.DateTime)); string addUserName =Convert.ToString( pAddUserName.GetValue(o)); DataRow[] drs=dtAttach.Select(string.Format( "ADDUSERNAME='{0}'",addUserName)); string template = " <a class=\"downLoad\" style=\"color: blue\" target=\"_blank\" href=\"/Ajax/UpLoadFile_Ajax.ashx?Method=DownLoad&fileName={0}&filePath={1}\">{0}</a>"; StringBuilder sbAttachInfo = new StringBuilder(); foreach (DataRow dr in drs) { sbAttachInfo.AppendFormat(template, Convert.ToString(dr["FileName"]), Convert.ToString(dr["filePath"])); } HtmlTableCell htcFileNames = ((HtmlTableCell)e.Item.FindControl("fileNames")); htcFileNames.InnerHtml = sbAttachInfo.ToString(); } }
相关文章
- (第九天)DOM事件
- C#【高级篇】 C# 泛型(Generic)【需进一步补充:泛型接口、泛型事件的实例】
- Vue - PC 端列表下拉页面触底加载分页数据,监听浏览器屏幕触底事件,类似uni-app微信小程序的onReachBottom()页面触底生命周期函数(监听屏幕触底事件,实现懒加载效果)
- 2014国内外数据泄密事件大盘点
- 揭秘 IFTTT 每天处理几十亿事件数据的基础结构
- DataHub: 现代数据栈的元数据平台--如何将自定义的元数据事件发送到DataHub
- c#中事件注册多个委托并获取委托列表
- AngularJS路由系列(5)-- UI-Router的路由约束、Resolve属性、路由附加数据、路由进入退出事件
- Vue绑定事件,双向数据绑定,只是循环没那么简单
- 《PhoneGap移动应用开发手册》——1.4节通过加速计事件更新对象的显示位置
- SwiftUI实战之如何获取Picker数据修改事件
- 响应式编程是一种面向数据流和变化传播的编程范式:抽象(事件、数据)、流、声明式
- Spring5参考指南:事件Event
- EXTJS 4.2 资料 控件之Grid 行编辑绑定下拉框,并点一次触发一次事件
- js实现默认或者触发一个事件选中元素内容的方法
- 微信小程序开发入门与实战(数据、事件、条件)
- Unity 进阶 之 UGUI 实现动态数据动态翻页显示效果的简单封装(动态更新数据动态更新显示,包括页码和按钮事件等功能)
- Unity UIWidgets 之 UIWidgets 简单入门使用之 简单点击事件的数据交互使用
- Unity 基础 之 简单实现鼠标点击(手机触屏)非 UI 处监听双击事件/长按事件的功能(内附判断点击在UI上还是非UI上的方法)
- C# 委托和事件简介
- 【监控笔记】【2.2】扩展事件——死锁监控
- SQLServer2012基于扩展事件的阻塞监控
- 银行卡信息安全事件频发 互联网站成数据泄露“重灾区”
- JQuery/JS插件 jsTree checkbox选中事件 和 节点选中事件 分离版
- 云端还是本地,数据放哪儿更安全之泄密事件类型分析篇
- 大型数据泄露事件并未迫使企业增加安全投入