asp.net gridview模板列

时间:2009-09-24 05:42:40

标签: asp.net

在我的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;

    }

提前谢谢 桑吉塔

3 个答案:

答案 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)

请验证分页中的图像路径。如果图片路径相同,则禁用浏览器缓存。