日期:2014-05-17  浏览次数:20496 次

新手求教大家 关于分页后ImageButton的ImageUrl属性显示问题
我先说明一下我的问题,这个分页是用AspNetPager做的每页显示数是16个,显示的是ImageButton,点击ImageButton会把对象的URL传给另外一个页面 现在的问题是分页是对的,传的URL也是对的,但是ImageButton的ImageUrl有问题,比如我有20个图片第一页显示的是1-16个图片,点击下一页后正常情况应该显示第17个图片,但是现在他显示的又是第1个图片但是点击后 传的URL是17的图的,就是对象已经分页成功 但是ImageButton的ImageUrl没有分页 以下是代码

后台
 DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
 List<npic> list = new List<npic>();
 for (int i = 0; i < dv.Count;i++ )
 {
  npic model = new npic();
  model.id=Convert.ToInt32(dv.Table.Rows[i].ItemArray[0]);
  model.name = dv.Table.Rows[i].ItemArray[1].ToString();
  model.url = dv.Table.Rows[i].ItemArray[2].ToString();
  model.typeid = dv.Table.Rows[i].ItemArray[3].ToString();
  model.orderby = Convert.ToInt32(dv.Table.Rows[i].ItemArray[4]);
  list.Add(model);
 }
apage.RecordCount = dv.Count;
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dv;
pds.AllowPaging = true;
pds.CurrentPageIndex = apage.CurrentPageIndex - 1;
pds.PageSize = apage.PageSize;
gvadm.DataSource = pds;
gvadm.DataBind();
for (int i = 0; i < gvadm.Items.Count; i++)
  {
  ImageButton imgd = (ImageButton)gvadm.Items[i].FindControl("btnserch");
  imgd.ImageUrl = "img/" + list[i].url;
  }


前台

 <td id="fen" colspan="2" valign="top">
 <asp:Repeater ID="gvadm" runat="server" >
 <ItemTemplate>
 <asp:ImageButton ToolTip="点击我选择图片" CommandArgument='<%# Eval("url") %>' Height="50px" Width="100px" ID="btnserch" runat="server" oncommand="btnserch_Command" />
 </ItemTemplate>
 </asp:Repeater>

------解决方案--------------------
for (int i = 0; i < gvadm.Items.Count; i++)
{
ImageButton imgd = (ImageButton)gvadm.Items[i].FindControl("btnserch");
imgd.ImageUrl = "img/" + list[i].url;
}

这是你自己定义的啊,每次是一样的啊

你应该加上
pds.CurrentPageIndex * pds.PageSize

------解决方案--------------------
debug看看,进入分页后是否执行了imgd.ImageUrl = "img/" + list[i].url;
这句最好放到
Repeater1_ItemDataBound
------解决方案--------------------
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
 List<npic> list = new List<npic>();
 for (int i = 0; i < dv.Count;i++ )

你这取到的数据是从17开始的吗?

你要分析自己的代码啊。学会调试

显示不对,原因有2个
1,是取到的数据不对
2,代码逻辑不对,

自己先调试吧