repeater加载出现多个空行问题,在线等。。。。

fengyuananan 2012-08-16 04:33:43
请大家帮我看一下,这应该是个bug,找不到问题出在哪,很急啊,,,在线等。。。

我是bs项目,在一个页面上,有一个文本框是数据查询条件的txt,两个按钮btn1和btn2,两个repeater加载不同数据rpt1和rpt2,我不输入条件,点击btn1,rpt1加载数据成功,点击btn2,rpt2加载数据成功;我输入条件(rpt1和rpt2都满足)分别点击btn1和btn2,rpt1和rpt2加载数据也是正常的。。。

问题出现了:我输入一个条件(rpt1不满足,rpt2满足)的条件,点击btn1,rpt1没加载数据(正常),我点击btn2,rpt2加载正常,rpt1就会出现很多空行(空行的行数是上一次有数据的数据行数),,,我绑定rpt1的方法test1和绑定rpt2的方法是test2,两个独里的方法,我点击btn1调用test1,点击btn2调用test2,,,我调试了没有问题,,不知道空行是怎么出来的。。。

反之也是,输入条件(rpt1满足,rpt2不满足)我点击btn1,rpt1加载数据正常,点击btn2时,rpt2就不加载数据,这时候rpt1就会出现很多空行,,,


不知道我说明白没有,,,请大家帮我看看。。。
...全文
223 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyuananan 2012-08-17
  • 打赏
  • 举报
回复
谢谢大家,我的问题解决了。。。就是换一种写法,,,就不会出现这个问题了。。。非常感谢热心的你们!
DataTable dt = ymjQxBLL.GetDataQxDoor(doorid, doornames, budno);
if (dt != null && dt.Rows.Count > 0)
{
rpt1.DataSource = dt;
rpt1.DataBind();
}
else
{
rpt1.DataSource = null;
rpt1.DataBind();
}
test2的代码
DataTable dt = ymjDoorBLL.SearchInfo(false, door);
if (dt != null && dt.Rows.Count > 0)
{
rpt2.DataSource = dt;
rpt2.DataBind();
}
else
{
rpt2.DataSource = null;
rpt2.DataBind()
}
这个结果是我用小demo慢慢试数来的,,,还是很感谢大家,,,立即散分!
fengyuananan 2012-08-17
  • 打赏
  • 举报
回复
楼上的说的,,我把rpt1和rpt2的数据绑定都注释掉,,,rpt就没反应了,,,,
我把rpt1的绑定加上,rpt2的绑定注释掉,,,,我输入rpt1 不满足的条件,,,点击btn1是没问题的,,点击btn2 的时候,rpt1又会出现很多空行。。。。

我btn2调用的只是绑定rpt2 的方法,与rpt1都没关系,,,不明白 rpt1为什么会变。。。。
风2013 2012-08-16
  • 打赏
  • 举报
回复
估计是你的代码 是数据源中的 数据 有--->没有 的时候出现了空行 去掉绑定数据源条件判断试一下

if (dt != null && dt.Rows.Count > 0)

fengyuananan 2012-08-16
  • 打赏
  • 举报
回复
没有写啊,rpt的绑定方法只有btn在调用,,,我在看是不是 页面缓存的问题,,但是把这句话加上<%@ OutputCache Location="None" %> 清除页面缓存,,,,还是没有用,,,点击btn1,rpt2还是会出现很多空行。。。。
杰拉尔 2012-08-16
  • 打赏
  • 举报
回复
如果写了一定要加在if(!ispostback){ } 里面
杰拉尔 2012-08-16
  • 打赏
  • 举报
回复
pageload中有写绑定代码吗。

fengyuananan 2012-08-16
  • 打赏
  • 举报
回复
我的test1的代码
DataTable dt = ymjQxBLL.GetDataQxDoor(doorid, doornames, budno);
rpt1.Controls.Clear();
if (dt != null && dt.Rows.Count > 0)
{
rpt1.DataSource = dt;
rpt1.DataBind();
}
test2的代码
DataTable dt = ymjDoorBLL.SearchInfo(false, door);
rpt2.Controls.Clear();
if (dt != null && dt.Rows.Count > 0)
{
rpt2.DataSource = dt;
rpt2.DataBind();
}
点击btn1调用test1,点击btn2调用test2,所以不管条件满不满足,我点击btn1 的时候,rtp2 都应该不变的啊?
fengyuananan 2012-08-16
  • 打赏
  • 举报
回复
我说 击btn1,rpt1没加载数据(正常) 这是查询条件不满足数据源的情况,所以没有数据,而且我在rpt1和rpt2绑定数据前,都做了清空啊,,rpt1.Controls.Clear(); 所以数据源如果是空的话,,rpt就直接是空了,,,

我奇怪的问题是,我点击的是 btn1 啊,怎么rpt2(不满足条件)为什么会刷新生成很多空行啊?我btn1里面都没有对rpt2的操作。。。
  • 打赏
  • 举报
回复
无论点击了那个按钮,两个repeater都应该重新绑定一次数据源
蝶恋花雨 2012-08-16
  • 打赏
  • 举报
回复
DataTable dt=new DataTable();
repeater.DataSource = dt;
repeater.DataBind();
fengyuananan 2012-08-16
  • 打赏
  • 举报
回复
好奇怪的问题啊,,我绑定是两个单独的方法(不同数据源),btn1控制rpt1,btn2控制rpt2,条件满足rpt1不满足rpt2时,我点击btn1(满足条件的),应该只加载rpt1 啊,,,为什么页面一刷新之后,rpt2(不满足条件的)会变呢?还生成很多的空行?
蝶恋花雨 2012-08-16
  • 打赏
  • 举报
回复
击btn1,rpt1没加载数据(正常),我点击btn2,rpt2加载正常

这里给rpt1绑定下为空。就是直接给他个空数据源。就不会显示了
同理在rpt1正常时rpt2出现也这样做。、
fengyuananan 2012-08-16
  • 打赏
  • 举报
回复
不是同一数据源
  • 打赏
  • 举报
回复
两个repeater是绑定的同一个数据源么?没有代码,不知道问题是否出在绑定上

62,243

社区成员

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

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

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

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