我有个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里没有控件,怎么遍历呀?
<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里没有控件,怎么遍历呀?
解决方案 »
- 求实现一个runat="server" 的div显示隐藏,并定位到鼠标位置的代码,不胜感激!
- Discuz!NT 中的公告
- 高手进
- 实体类的设计和加载问题
- 在Repeater中使用 usemap 出现的问题
- 关于Profile,Form,Cookies怎么使用?谢谢!
- 关于使用cookies登陆的问题
- 我将2003的Web项目改用vsnet2005做了一段,发现租用的虚拟主机上没有dotnet2.0,该怎么办?现在要改回2003?
- 如何用代码设定控件的runat属性为server
- ODBC数据源连接高手快进来~~~!!
- IIS存储空间不足,无法处理此命令
- 如何正确用VS2005加载VS2008的Web项目
{
for(int i = 0; i < item.Cells; ++i)
{
string text = item.Cells[i].Text;
}
}
<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>
当然我刚才那个代码只是示例。
因此不想,也无法从后台获取那个datatable,只能遍历rpt了。
然后要打印的。谢谢你,但不知道仔细看我的问题了没有。
哎,太多label会影响速度呀。
谢谢,你这个方法不行呀,item没有cells的属性,请测试下就知道了。
<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;
} } }
}还有其他办法的
{
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;//当前行的数据
}
}
按照楼主给出的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>");
}
}