关于asp.net中Repeater控件的一些应用
在Asp.net中,我是比较喜欢用Repeater这个控件,刚刚遇到的一个问题,怎么实现单击 <asp:LinkButton>,通过后台的单击事件获取同一行数据中的其他数据(对象)。
1, 刚刚百度到一个RepeaterItem类,可以用来存储当前一行对象(至少在数据库读出来的时候是同一行的)所有对象;
2, 使用方法 : 首先获取当前单击对象,使用当前单击对象的 Parent这个属性获得当前行 使用了数据绑定的对象集。实例如下:

protected void Link1_Click(object sender, EventArgs e) { LinkButton lbl_1 = (LinkButton)sender; RepeaterItem item = (RepeaterItem)lbl_1.Parent; Label lbl_txt = (Label)item.FindControl("lbl_txt"); Script.Alert(lbl_txt.Text); }
3,注意事项 : 我觉得这个还是蛮重要的,便于自己以后查看。就是如果需要获取对象,获取的对象ID必须是后台变量,而且格式如下:
1 2 3 4 5 6 7 8 9 | < body > < form id="form1" runat="server"> < ucl:Ctr_Header runat="server" ID="Ctr_Header_1" /> < ul > < asp:Repeater runat="server" ID="Repeat_List"> < ItemTemplate > < li > < span class="fr"><%# DataBinder.Eval(Container.DataItem, "newsDate") %></ span > < asp:LinkButton runat="server" ID="Link1" OnClick="Link1_Click" Text='<%# DataBinder.Eval( Container.DataItem, "title") %>'>< br > </ asp:LinkButton > < br > < asp:Label runat="server" ID="lbl_txt" CssClass="fl" ><%# DataBinder.Eval(Container.DataItem, "oprDate") %></ asp:Label >< br > </ li >< br > </ ItemTemplate > < br > </ asp:Repeater > < br > </ ul > < br > < ucl:Ctr_Footer runat="server" ID="Ctr_Footer_1" /> < br > </ form > < br ></ body > |
必须使绑定的数据要跟ID在同一个中括号(<>)里面,一般存在Text属性中,如果将对象放在<asp:TextBox runat="server" ID="txt"><
1 | %# DataBinder.Eval( Container.DataItem, "title") %></ asp:TextBox >中是无效的,也就是无法获取该元素的ID,无法获取该文本框。切记!!! |
></asp:TextBox>
使用数据绑定时:先判断
1 | if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | protected void major_kind_DataBound( object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { LinkButton lbt_Update = (LinkButton)e.Item.FindControl( "lbt_Update" ); LinkButton lbt_Save = (LinkButton)e.Item.FindControl( "lbt_Save" ); LinkButton lbt_Del = (LinkButton)e.Item.FindControl( "lbt_Del" ); // txt_Num = (TextBox)e.Item.FindControl("txt_Num"); // input_Name = (TextBox)e.Item.FindControl("input_Name"); // lbt = lbt_Save; // 用来触发 文本框, // 数据更新 } } |
OK,记录完毕,继续!!!加油!!!
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2012-10-26 windows 中从fat格式转换为ntfs