repeater多列显示问题

qinglong332 2012-05-03 09:53:58
想问下repeater多列显示问题
外面加个
int tdIndex = 1;
绑定事件里用
if (tdIndex % 3 == 0)
{
Literal ltrlBr = new Literal();
ltrlBr.Text = "</tr><tr>";
e.Item.Controls.Add(ltrlBr);
}
tdIndex++;
确实可以多列显示,但页面回发后就全部单行显示了,能解决吗?
DataList可以,但感觉只用来显示数据太过浪费,耗时长
...全文
216 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinglong332 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

别用变量,页面回发相当于重新打开了页面,变量又被归零了,最好用label,把值保存在label中数据就不容易丢失了~
[/Quote]

一楼的回答怎么一直到结贴的时候才看到的?未结贴之前都没显示过。。。
qinglong332 2012-05-08
  • 打赏
  • 举报
回复
哈哈哈,自己完美解决此问题了:
1.直接把Literal加到了前台,不设置文本值。
2.后台动态获取Literal控件,当被操作项该换行时,设置其文本值为"</tr><tr>"。
3.打完收工。嘘。

前台:

<table cellspacing="0" border="0" style="width:106px;border-collapse:collapse;">
<tr><asp:Repeater ID="rptSections" runat="server" onitemdatabound="rptSections_ItemDataBound">
<ItemTemplate>
<td><div style="width:60px; margin-left:2px;">
<a href="#" style="text-decoration: none; color: #676767;"
runat="server" id="sectionLnk"></a>
</div></td>
<asp:Literal ID="ltrlBr" runat="server"></asp:Literal>
</ItemTemplate>
</asp:Repeater></tr>
</table>


后台:

protected int tdIndex = 1;
protected void rptSections_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// 动态获取相栏目信息
RepeaterItem rptItem = e.Item;
DataRow dtRow = (rptItem.DataItem as DataRowView).Row;
int id = dtRow.Field<int>("ID");
string sectionName = dtRow.Field<string>("Name");

// 动态设置相关栏目超链接
HtmlAnchor sectionLnk = rptItem.FindControl("sectionLnk") as HtmlAnchor;
sectionLnk.Title = sectionName;
sectionLnk.HRef = "SectionPage.aspx?id=" + id + "&cityid=" + GetCityId();
sectionLnk.InnerText = sectionName;

// repeater嵌套使用,内层repeater每次初始置1后操作
if (rptItem.ItemIndex == 0)
{
tdIndex = 1;
}
if (tdIndex % 3 == 0)
{
Literal ltrlBr = rptItem.FindControl("ltrlBr") as Literal;
ltrlBr.Text = "</tr><tr>";
}
tdIndex++;
}
qinglong332 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

用DIV很好处理的,循环DIV。
[/Quote]
div在垂直方向上排序不好排(Repeater嵌套效果不好),下面是用table排列的效果图:


如果改DIV,基本就是顶端对齐了
qinglong332 2012-05-05
  • 打赏
  • 举报
回复
有。。有米有人能告诉我??
tkss 2012-05-05
  • 打赏
  • 举报
回复
用DIV很好处理的,循环DIV。
qinglong332 2012-05-03
  • 打赏
  • 举报
回复
我是2层嵌套的,
那样的话,要重新获取数据源,重新绑定外层Repeater数据
是不是比起DataList就麻烦了?

我就想优化一下,不知在显示时哪个更节约时间(多列)
乘风破浪dgg 2012-05-03
  • 打赏
  • 举报
回复
回发后重新绑定数据啊,要么加上viewstate试试行不。
ice_baili 2012-05-03
  • 打赏
  • 举报
回复
别用变量,页面回发相当于重新打开了页面,变量又被归零了,最好用label,把值保存在label中数据就不容易丢失了~
qinglong332 2012-05-03
  • 打赏
  • 举报
回复
前台代码如下:

<table cellspacing="0" border="0" style="width:106px;border-collapse:collapse;">
<tr><asp:Repeater ID="rptSections" runat="server" onitemdatabound="rptSections_ItemDataBound">
<ItemTemplate>
<td><div style="width:60px; margin-left:2px;">
<a href="#" style="text-decoration: none; color: #676767;"
runat="server" id="sectionLnk"></a>
</div></td>
</ItemTemplate>
</asp:Repeater></tr>
</table>

后台代码:

protected int tdIndex = 1;
protected void rptSections_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// 动态获取相栏目信息
DataRow dtRow = (e.Item.DataItem as DataRowView).Row;
int id = dtRow.Field<int>("ID");
string sectionName = dtRow.Field<string>("Name");

// 动态设置相关栏目超链接
HtmlAnchor sectionLnk = e.Item.FindControl("sectionLnk") as HtmlAnchor;
sectionLnk.Title = sectionName;
sectionLnk.HRef = "SectionPage.aspx?id=" + id + "&cityid=" + GetCityId();
sectionLnk.InnerText = sectionName;

// repeater嵌套使用,内层repeater每次初始置1后操作
if (e.Item.ItemIndex == 0)
{
tdIndex = 1;
}
if (tdIndex % 3 == 0)
{
Literal ltrlBr = new Literal();
ltrlBr.Text = "</tr><tr>";
e.Item.Controls.Add(ltrlBr);
}
tdIndex++;
}


初始加载确实可行,回发后变成单行显示了,咋整?
有人说用AlternatingItemTemplate显示2列,确实可以,我就想知道要是超过2列呢?只能用DataList吗?
会不会太浪费啊?
qinglong332 2012-05-03
  • 打赏
  • 举报
回复
没人解答吗???
导言   在之前的28篇教程的例子里,如果我们需要显示某个数据源的多条记录,我们使用GridView .GridView 的一行表示数据源的一条记录,列表示一个字段.虽然GridView 用来显示数据,分页,排序,编辑,删除非常的方便,但是有点臃肿.而且GridView 结构的标记是固定的—它包含一个带有和的HTML 标记.   为了在显示多条记录时,有更好的自定义功能,ASP.NET 2.0提供了DataList 和Repeater (ASP.NET 1.x版本里也有 ).DataList 和Repeater 使用模板来显示内容,而不是象在GridView里那样
4.1 使用控件显示文本 实例 显示密码格式文本 实例 显示长日期格式时间 实例 显示金额格式文本 4.2 使用控件显示图片 实例 显示验证码图片 实例 动态显示用户头像 实例 使用网页对话框显示图片 实例 实现上传图片 实例 GridView控件显示商品缩略图 4.3 控件的超级链接 实例 ImageButton按钮超级链接查看商品详细信息 实例 GridView控件中使用超级链接模板列查看详细信息 实例 DataList控件模板中使用LinkButton查看详细信息 4.4 下拉列表框的应用 实例 间接改变DropDownList当前选项 实例 实现多个DropDownList控件的联动 实例 动态添加、删除DropDownList控件选项 4.5 单选按钮的应用 实例 性别选择 实例 网络考试系统中单选题答案的选择 4.6 复选框的应用 实例 登录身份选择 实例 网络考试系统中多选题答案的选择 4.7 控件连接数据源 实例 通过向导配置AccessDataSource 实例 通过向导配置SqlDataSource 实例 通过向导配置XmlDataSource 4.8 GridView控件的应用 实例 数据绑定并实现分页功能 实例 选中、编辑、取消、删除数据项 实例 GridView实现正反双项排序功能 实例 GridView控件中DropDownList控件的绑定 实例 通过CheckBox删除选中记录 实例 删除GridView控件行信息弹出确认提示框 实例 在GridView控件中实现自动编号 实例 GridView控件实现主细表 实例 查看当前页详细信息 实例 单元格中指定字符串固定长度 实例 供求信息网审核发布信息 实例 根据学生成绩合格与不合格显示不同颜色 4.9 DataList控件的使用 实例 绑定数据并实现分页 实例 编辑DataList控件模板显示员工信息 实例 DataList控件实现主细表 实例 DataList控件实现删除功能 4.9 Repeater控件的使用 实例 Repeater控件数据绑定 实例 Repeater控件分页 实例 编辑Repeater控件标识商品信息

62,046

社区成员

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

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

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

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