在我的asp.net gridview中,我正在放置一个显示图像的模板列。
在模板列中,我添加了一个图像控件,它成功显示了数据库中的图像。我也在使用分页。
分页也发生了,但是当我做分页时,图片没有以正确的顺序进入网格视图,例如前三页,它显示a.jpg,b.jpg,c.jpg,当我点击页码时它会重复相同的图片而不是剩余的图片,我也在加载事件中使用if(!ispostback)
。请帮帮我。
页面加载事件中的代码是:
da = new SqlDataAdapter(“select * from t1”,con); ds = new DataSet(); da.Fill(DS); path = Server.MapPath(@“〜\ images”); if(!IsPostBack) { GridView1.DataSource = ds; GridView1.DataBind();
ASCIIEncoding asc = new ASCIIEncoding();
int j = GridView1.Rows.Count;
for (int i = 0; i < j; i++)
{
GridViewRow r=GridView1.Rows[i];
b = (byte[])ds.Tables[0].Rows[i]["photo"];
string name = asc.GetString(b);
Image img = (Image)r.FindControl("Image1");
img.ImageUrl = path + @"\" + name;
}
}
我的分页事件代码是
GridView1.PageIndex = e.NewPageIndex; GridView1.DataSource = ds; GridView1.DataBind(); ASCIIEncoding asc = new ASCIIEncoding(); int j = GridView1.Rows.Count;
for (int i = 0; i < j; i++)
{
GridViewRow r=GridView1.Rows[i];
b = (byte[])ds.Tables[0].Rows[i]["photo"];
string name = asc.GetString(b);
Image img = (Image)r.FindControl("Image1");
img.ImageUrl = path + @"\" + name;
}
提前谢谢 桑吉塔
答案 0 :(得分:0)
编写分页方法时,仍需要重新查询数据源并重新绑定gridview(以及设置PageIndex)。
答案 1 :(得分:0)
假设您只有图像名称存储在数据库中,您可以在模板列中的图像控件中执行此操作
将图片网址的数据绑定设置为
String.Format("images/{0}",Eval("photo"))
正如恩惠所说
当您编写分页方法时 仍然需要重新查询数据源 并重新绑定你的gridview(以及 设置PageIndex)。
您可以声明一个从数据库中取出记录的方法
protected void fillData()
{
da = new SqlDataAdapter("select * from t1", con);
ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
并使用它将数据绑定到gridview 并在您的paging_indexChanging函数
GridView1.PageIndex = e.NewPageIndex;
fillData();
答案 2 :(得分:0)
请验证分页中的图像路径。如果图片路径相同,则禁用浏览器缓存。