###详解如何在GridView中显示图片或链接(当不能确定哪一列中含有图片或链接时)###

时间:2021-08-02 19:32:10
最近在网上看到很多人提问如上问题,现把个人解决及分析发布,希望能对大家有所帮助,同时也为自己很久不上CSDN做个弥补.如果你有更好的方案,可以共同学习探讨.

我的BLOG详解原文地址:http://www.xiaopixie.com/web/news.aspx?id=213

相信大家一定很头痛,当用一个DATATABLE来绑定GRIDVIEW时,而我们又不确定DATATABLE的哪一列中含有图片或链接.我们存在DATATABLE中的"<img src=abc.jpg>"或"<a href=eee.aspx>ddd</a>"就会被无情的原样显示.

 首先让我们剖析一下GRIDVIEW这个控件,大家都知道GRIDVIEW先承载绑定的数据,然后才进行解析.

  也就是说GRIDVIEW装完数据后和数据一起解析为<table><tr><td></td></tr></table>格式的HTML代码,然后显示出来.在这个解析过程中"<"会扰乱它自身转化为<table>格式的解析流程.所以它会先把承载数据中的"<"进行编码,以防止它的干扰,然后对自身进行HTML的TABLE格式转换.

     不过GRIDVIEW比较懒惰,自身解析完后,它却没有对"<"进行还原.所以这个后续部分只有我们自己来做.

    现在进入正题,首先让我们建一个DATATABLE:


  DataTable dt = new DataTable()

        dt.Columns.Add("小皮鞋链接")
        dt.Columns.Add("小皮鞋图片")
        dt.Columns.Add("小皮鞋数据库图片")
        
        DataRow dr = dt.NewRow()
        dr[0] = "<a href=http://www.xiaopixie.com>站点</a>"
        dr[1] = "<img src =http://www.xiaopixie.com/img/xiaopixie.jpg>"
        dr[2] = "<img src=photo.aspx?id=1>" //photo.aspx负责提取数据库中的图片然后用二进制输出,这里不再详述

        dt.Rows.Add(dr)

然后进行绑定:

     this.GridView1.DataSource = dt
        this.GridView1.DataBind()

 //下面是最重要的部分.或许有人会在这里问,这样做会影响效率吗?个人认为是不会的.因为你不可能在GRIDVIEW里装超过一千条数据,多了你会分页处理.所以分页中每页超过一千条数据,几呼不可能.


        //现在让我们来完成GRIDVIW没有完成的工作
        foreach (GridViewRow rw in this.GridView1.Rows)
        {
            for (int i = 0 i < rw.Cells.Count i++)
            {
                rw.Cells[i].Text = rw.Cells[i].Text.Replace("&lt", "<").Replace("&gt", ">")
            }
        
        }


 

                                                                                       小皮鞋 2007.5.9

4 个解决方案

#1


sf

#2


教学贴 支持!

#3


谢谢

#4


非常感谢!

#1


sf

#2


教学贴 支持!

#3


谢谢

#4


非常感谢!