Repeater里没控件,如何遍历它呢??

woodyy 2010-01-07 10:15:34
我有个repeater,代码如下

<asp:Repeater ID="Repeater1" runat="server" >
<HeaderTemplate>
<table >
<tr>
<th >
所属部门
</th>
<th >
部门成员
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr >
<td >
<%# DataBinder.Eval(Container.DataItem, "DepName")%>
</td>
<td >
<%# DataBinder.Eval(Container.DataItem, "Name")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</cc1:Repeater>


我repeater里没放控件,如果放控件了,我知道如何遍历

foreach (RepeaterItem item in this.Repeater1.Items)
{
item.FindControl("控件id") as 控件类型
}


可是repeater里没有控件,怎么遍历呀?
...全文
312 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2010-01-07
  • 打赏
  • 举报
回复

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="rp" runat="server" onitemcreated="rp_ItemCreated">
<AlternatingItemTemplate>
<%#Eval("ID") %>,
</AlternatingItemTemplate>
<ItemTemplate>
<%#Eval("ID") %>,
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>



private DataTable GetDT()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
DataRow dr;
for (int i = 0; i < 5; i++)
{
dr = dt.NewRow();
dr[0] = i;
dt.Rows.Add(dr);
}
return dt;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
rp.DataSource = GetDT();
rp.DataBind();
}
}
protected void rp_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv = e.Item.DataItem as DataRowView;
if (drv != null)
{
object obj = drv[0] ?? "0";
int id;
int.TryParse(obj.ToString(), out id);
switch (id)
{
case 1:
drv[0] = 1001;
e.Item.DataItem = drv;
break;
case 2:
drv[0] = 1002;
e.Item.DataItem = drv;
break;
}

}

}
}

还有其他办法的
woodyy 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhujiazhi 的回复:]
foreach (RepeaterItem item in this.Repeater1.Items)
        {
            for(int i = 0; i < item.Cells; ++i)
{
string text = item.Cells[i].Text;
}       
        }

[/Quote]

谢谢,你这个方法不行呀,item没有cells的属性,请测试下就知道了。
woodyy 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 che2piaopiao 的回复:]
建议你用 lable 显示吧。。。
[/Quote]

哎,太多label会影响速度呀。
woodyy 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sandy945 的回复:]
用 item.DataItem

然后进行类型转换 如果绑定是 DataTable 的话 转换成 DataRowView
[/Quote]
谢谢。就是用datatable绑定的,但是这个方法不行呀。

[Quote=引用 2 楼 sandy945 的回复:]
遍历 做什么?
[/Quote]
谢谢,repeater虽然是简单绑定的,但是在前台执行了一些事件,才形成真正看到的repeater。
当然我刚才那个代码只是示例。
因此不想,也无法从后台获取那个datatable,只能遍历rpt了。
然后要打印的。

[Quote=引用 2 楼 sandy945 的回复:]
findcontrol
[/Quote]
谢谢你,但不知道仔细看我的问题了没有。


flyerwing 2010-01-07
  • 打赏
  • 举报
回复
findcontrol
maminglong 2010-01-07
  • 打赏
  • 举报
回复
<asp:Repeater ID="rtExamine" runat="server" >
<HeaderTemplate>
<table style="width: 559px">
</HeaderTemplate>
<ItemTemplate>
<tr>
<asp:Label ID="lblIsPass" runat="server" Visible="false" Text='<%# Eval("IsPass") %>'></asp:Label>
<td colspan="4">
<hr />
</td>
</tr>
<tr>
<td style="width: 145px">
<asp:Label ID="Label1" runat="server" Text="审核人编号"></asp:Label>
</td>
<td style="width: 163px">
<asp:TextBox ID="TextBox1" ReadOnly="true" runat="server" CssClass="input" Text='<%#Eval("ToUserNum") %>'></asp:TextBox>
</td>
<td style="width: 145px">
<asp:Label ID="Label2" runat="server" Text="审核人姓名"></asp:Label>
</td>
<td style="width: 162px">
<asp:TextBox ID="TextBox2" ReadOnly="true" CssClass="input" runat="server" Text='<%#Eval("ToUserName") %>'></asp:TextBox>
</td>
</tr>
zhujiazhi 2010-01-07
  • 打赏
  • 举报
回复
foreach (RepeaterItem item in this.Repeater1.Items)
{
for(int i = 0; i < item.Cells; ++i)
{
string text = item.Cells[i].Text;
}
}
gdjlc 2010-01-07
  • 打赏
  • 举报
回复
遍历 做什么?
che2piaopiao 2010-01-07
  • 打赏
  • 举报
回复
建议你用 lable 显示吧。。。
阿非 2010-01-07
  • 打赏
  • 举报
回复
用 item.DataItem

然后进行类型转换 如果绑定是 DataTable 的话 转换成 DataRowView
zhouzangood 2010-01-07
  • 打赏
  • 举报
回复
sf
zhangkewen1234 2010-01-07
  • 打赏
  • 举报
回复

按照楼主给出的Repeater,除了用FindControl遍历找出来比较容易外,其他都比较困难吧

当Repeater绑定完数据后,可以下个断点,看下他们怎么存储数据的就知道了

按照楼主给的Repeater,也可以增加个Button事件,用下面的代码看下
protected void Button1_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in this.Repeater1.Items)
{
Response.Write(((System.Web.UI.DataBoundLiteralControl)(item.Controls[0])).Text+"<br>");
}


}
MM_MM_ 2010-01-07
  • 打赏
  • 举报
回复
mark
wuyq11 2010-01-07
  • 打赏
  • 举报
回复
foreach (RepeaterItem item in this.Repeater1.Items)
{
HtmlTableRow tr = (HtmlTableRow)item.FindControl("rows");
foreach (HtmlTableCell td in tr.Cells)
{
Response.Write(td.InnerHtml);
}

}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView)e.Item.DataItem;//当前行的数据

}
}

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧