Repeater数据控件的两个重要事件ItemDataBound 和 ItemCommand
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>)
{
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();
}
}
Repeater数据控件的两个重要事件ItemDataBound 和 ItemCommand的更多相关文章
- DataItem,gridview,repeater数据控件数据绑定
Container.DataItem几种方式. 在绑定数据时经常会用到这个句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx") ...
- ASP.NET-----Repeater数据控件的用法总结(转)
一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...
- [转载]ASP.NET-----Repeater数据控件的用法总结
一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...
- CYQ.Data 支持WPF相关的数据控件绑定.Net获取iis版本
CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09) 事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便 ...
- ASP.NET数据控件
数据服务器控件就是能够显示数据的控件,与那些简单格式的列表控件不同,这些控件不但提供显示数据的丰富界面(可以显示多行多列数据并根据用户定义来显示),还提供了修改.删除和插入数据的接口. ASP.NET ...
- 用于后台管理的列表数据控件:DataGrid和Select
常听人说不喜欢javascript.然而我一个一直用C#做后端的人,最喜欢的编程语言就是javascript了,我接收它的优点,也接收它的缺点! 前段时间接触过easyui,用过里面的DataGrid ...
- ASP.NET Web数据控件
ASP.NET Web数据控件 1.数据控件简介 这包括数据源控件和格式设置控件,前者使您可以使用 Web 控件访问数据库中的数据,后者使您可以显示和操作ASP.NET 网页上的数据. 2.数据控件 ...
- 浅析五大ASP.NET数据控件
转自:http://kb.cnblogs.com/page/69207/ 摘要:ASP.NET中有不少的控件,在这当中有一部分是用来处理数据的控件.在这里我们正要讨论的就是ASP.NET数据控件,希望 ...
- 初始ASP.NET数据控件【续 ListView】
ListView控件 ListView控件可以用来显示数据,它还提供编辑,删除,插入,分页与排序等功能.ListView是GridView与DataList的融合体,它具有GridView控件编辑 ...
随机推荐
- 基于python语言的经典排序法(冒泡法和选择排序法)
前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...
- CF868 F. Yet Another Minimization Problem 决策单调优化 分治
目录 题目链接 题解 代码 题目链接 CF868F. Yet Another Minimization Problem 题解 \(f_{i,j}=\min\limits_{k=1}^{i}\{f_{k ...
- [HihoCoder1394]网络流四·最小路径覆盖
题目大意:从有向无环图中选出若干点不想交的链,使得这些链覆盖所有的点,并且链的条数最小. 思路:设超级源点$S$.超级汇点$T$.将$N$个点复制一份,分为$A$部和$B$部.对于$A$部的所有点$A ...
- String、StringBuffer、StringBulider
三者都实现了CharSequence接口,因此CharSequence可认为是一个字符串的协议接口 1.String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改 ...
- 以添加评论组件为例看angular2请求数据的处理
在NiceFish项目中,数据请求处理并没有用Promise的那一套方法,用的是Observable(观察者模式),我将其理解成生产者和消费者模式 如下简单例子:出自(https://segmentf ...
- webstorm更改字体大小
webstorm是一款不错的开发软件,一起来看看webstorm怎么更改字体大小. 1,打开该软件后,点击上面菜单栏的“文件”/File,找到其子菜单中的“设置”/Setting,点击打开. 2,在新 ...
- 伪造请求IP
//随机IP function Rand_IP(){ $ip2id= round(rand(600000, 2550000) / 10000); //第一种方法,直接生成 $ip3id= round( ...
- 学习shader之前必须知道的东西之计算机图形学-渲染管线
引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚 ...
- 根据 train_test.prototxt文件生成 deploy.prototxt文件
本文参考博文 (1)介绍 *_train_test.prototxt文件与 *_deploy.prototxt文件的不同:http://blog.csdn.net/sunshine_in_moon/a ...
- .net源码调试 http://referencesource.microsoft.com/
其实关于.net源码调试 网上的资料已经很多了,我以前转载的文章有 VS2010下如何调试Framework源代码(即FCL) 和 如何使你的应用程序调试进.NET Framework 4.5源代码内 ...