如何在 Repeater 的事件中得到 当前 Item 绑定的数据?
我用Repeater实现一个留言本,我的 Repeater(id为Rp1) 的 ItemTemplate 中有一个用于删除留言的 LinkButton(id为DelButton)。
留言本表结构
Table Message
(
ID,
UserName,
Message
)
我想用客户端脚本实现删之前的确认操作。即在删除前,提示出现一个脚本对话框。“您确信要删除 UserName 的留言吗?”其中UserName来自于Repeater的绑定数据,不同的Item,绑定的UserName值也不同。
经过acewang(龍芯*Inside!) 和SVG(ben) 两位大虾的帮助,我最后的实现办法如下:
显示页面:
<SCRIPT LANGUAGE="JavaScript">
<!--
function confirm_del(UserName)
{
return confirm('您确定要删除“' + UserName + '”吗?');
}
//-->
</SCRIPT>
<asp:Repeater id="repGuestbook" runat="server">
<ItemTemplate>
....
....
<asp:LinkButton id="DelButton" runat="server" OnCommand="Del_Click" CommandName="Del" CommandArgument= '<%# DataBinder.Eval(Container.DataItem,"ID") %>'>删除留言</asp:LinkButton>
....
....
</ItemTemplate>
</asp:Repeater>
代码页面:
private void InitializeComponent()
{
....
this.Rp1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
....
}
private void Repeater1_ItemDataBound(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType==ListItemType.Item)
{
LinkButton lb=(LinkButton)e.Item.FindControl("MyLB");
lb.Attributes["onClick"]="JavaScript:return confirm_del('" + DataBinder.Eval(e.Item.DataItem, "UserName") +"');return false;";
// lb.Attributes["onClick"]="JavaScript:return confirm_del('" + ((DataRowView)(e.Item.DataItem))["UserName"] +"');return false;";
}
}
上面的 onClick的实现演示了两种实现的办法。(第一种被注释掉了。)
实际应用的时候只需要一种就可以了。
DataBinder.Eval(e.Item.DataItem, "UserName") 这种方法使用简单。
((DataRowView)(e.Item.DataItem))["UserName"] 这种方法执行效率高。
分享到:
相关推荐
`(Container.DataItem, "绑定数据源字段名")%>`使用了DataBinder.Eval方法来绑定数据源中的字段到控件。这里的"绑定数据源字段名"应替换为实际的数据字段名称。 - `<asp:Button>`控件被用于导出数据,其`...
在ASP.NET Web应用程序中,`Repeater` 控件是一种非常强大的数据绑定控件,它能够灵活地展示来自不同数据源的数据,并允许开发者自定义显示格式。与`GridView`、`DataList`等其他数据绑定控件相比,`Repeater`提供了...
2. **定义内部Repeater控件**:在外部Repeater控件的模板中,定义一个内部的Repeater控件,用于展示与当前顶层数据项相关的子数据。 3. **设置数据源**:在页面的后端代码中,通过`DataSource`属性为外部Repeater...
在ASP.NET中,Repeater控件是常用的数据绑定控件,但是当我们需要在外部按钮点击事件中获取Repeater中HiddenField的值时,会遇到一些困难。下面我们将详细介绍如何获取Repeater中HiddenField的值。 首先,我们需要...
总结来说,本例中的Repeater嵌套方法利用了***的数据绑定和事件处理机制,通过在页面中嵌套Repeater控件,实现了分层显示数据列表的功能。这种技术在构建复杂的数据呈现页面时非常有用,特别是当数据具有层级结构...
4. 绑定数据源到`Repeater`控件,通常在代码-behind的`Page_Load`事件中完成。 ## 二、Repeater的编辑功能 实现`Repeater`控件的编辑功能,主要通过在`ItemTemplate`中包含可编辑的控件,如`TextBox`、`...
在代码-behind文件中,我们需要处理Repeater的ItemDataBound事件,以便在数据绑定时正确显示当前页的数据。同时,需要处理AspNetPager的PageChanging事件,当用户点击分页按钮时,根据新的页码重新加载数据并重新...
6. 递归处理:如果需要更深层的嵌套,可以在内部Repeater的ItemDataBound事件中继续添加新的Repeater并绑定数据,以此类推。 7. 访问权限:在后台代码中,事件处理方法通常需要声明为`protected`,以便ASP.NET框架...
3. **第二层Repeater绑定**:在第一层Repeater的ItemDataBound事件中,你可以访问到当前项的数据上下文(Item.DataItem),并以此为数据源绑定第二层Repeater。这里要注意,由于第二层Repeater是在运行时动态创建的...
// 获取子级Repeater并绑定数据 var childRepeater = (Repeater)e.Item.FindControl("ChildRepeater"); var childDataset = GetChildData(parentData.ParentId); // 假设我们根据父ID获取子数据 childRepeater....
3. 在外部`Repeater`的ItemTemplate中,我们需要添加内部`Repeater`控件,并在`OnItemDataBound`事件中绑定子数据。 ```aspx <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_...
`Container.DataItem`是`Repeater`项的数据上下文,它包含了当前迭代的数据项。 接下来,我们看后台(服务器端)代码。这里创建了一个`ArrayList`对象`arr`,然后用一个循环填充它。这通常代表从数据库或其他数据源...
在事件处理程序中,可以访问当前Item的数据项和对应的控件,进行自定义处理: ```csharp protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType....
在Repeater的ItemTemplate中定义数据项的布局,然后在代码-behind文件中为Repeater绑定数据。例如: ```xml <asp:Repeater ID="repData" runat="server"> <!-- 这里编写每个数据项的HTML结构 --> </asp:...
在DataGrid的模板列中,我们有一个名为"ChildRepeater"的Repeater控件,它的DataSource属性绑定到了当前行(由Container.DataItem表示)的子数据行,也就是通过"myrelation"关系获取的"location_id"匹配的"catalyst...
在`OnItemDataBound`事件中,我们可以访问到当前正在绑定的数据项,以便进行自定义处理,例如添加子级`Repeater`控件。 以下是实现三层嵌套的基本步骤: 1. **创建主Repeater**:在`.aspx`页面中,我们首先添加一...
在这个实例中,可能是在主`Repeater`的外层添加了一个分页控件(如`Pager`),并通过事件驱动更新数据源,使得每次点击分页按钮时,只加载当前页的数据到`Repeater`。 此外,为了提高用户体验,我们还需要关注一些...
1. **设置Repeater控件**:在HTML部分,我们创建一个Repeater控件,并为其绑定数据源。Repeater允许我们自定义每行的HTML结构,这样可以轻松地根据需求构建复杂布局。 ```html <asp:Repeater ID="rptData" runat=...
在示例中,`DataList`控件的`ItemTemplate`使用了`Eval`方法来绑定数据。`<asp:HyperLink>`的`NavigateUrl`和`<asp:Image>`的`ImageUrl`以及`<asp:Label>`的`Text`都使用了`Eval`方法,将数据源中的`PhotoID`、`...
2. **C#后端代码**:在Repeater控件的`ItemDataBound`事件处理程序中,为每个`RadioButton`添加一个`onclick`事件,当点击某个`RadioButton`时会触发`SetUniqueRadioButton`函数。 #### JavaScript函数详解 ```...