日期:2014-05-18  浏览次数:20483 次

GridView显示图片的问题
数据库中有一个字段Status,有4种结果:R,Y,G,E
我想在绑定显示的时候R就对应了红图片,Y-->黄图片,G-->绿图片,E-->黑图片
请问,如何在前台实现?

另外问一句,如果在Search时在SQL中就when'R' then 'path',用这种方法和在前台实现哪一种效率高?

除了这两种有没有更好的方法??

------解决方案--------------------
加载页面后遍历GRIDVIEW中Status的值来循环替换掉不行吗?
------解决方案--------------------
我觉得你可以这样在sql中多加一个字段例如:select field1,Status,'img' as StatusImg from table1
然后在把数据取到DataSet中循环dataset
foreach(DataRow row in dataset.Tables[0].Rows)
{
if(row["Status"].ToString() == "R")
{
row["StatusImg"] = "红色图片地址";
}
}
然后你在前台绑定StatusImg这个字段就可以了。

一般不把一些逻辑操作放到数据库中进行,大部分都放到程序中,因为数据库服务器一旦压力过大就不是很好进行分压,而程序却很容易就可以做一些简单的集群之类的分担压力。
------解决方案--------------------
RowDataBound事件中

C# code
if(e.Row.RowType == DataControlRowType.DataRow)
    {
      
        string str = e.Row.Cells[你的status那列的索引].Text;
       switch(str)
          {
            case "R":
               ....
             break;
            case "Y":
              ...
             break;
             下边的我就不写了
          }
        
    }

------解决方案--------------------
我觉得你可以这样在sql中多加一个字段例如:select field1,Status,'img' as StatusImg from table1 
然后在把数据取到DataSet中循环dataset 
foreach(DataRow row in dataset.Tables[0].Rows) 

if(row["Status"].ToString() == "R") 

row["StatusImg"] = "红色图片地址"; 


然后你在前台绑定StatusImg这个字段就可以了。 

一般不把一些逻辑操作放到数据库中进行,大部分都放到程序中,因为数据库服务器一旦压力过大就不是很好进行分压,而程序却很容易就可以做一些简单的集群之类的分担压力。