CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记
1 ItemDataBound:数据绑定的时候(正在进行时)发生。
2 ItemCommand :用来响应Item模板中的控件的事件。
如下代码
aspx代码:
<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代码:
//响应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");
}
}
}