日期:2014-05-19  浏览次数:20480 次

在GridView中如何用图片替换原来数据库字段中的文字,比如字段是“1”“2”“3”则分别用不同的GIF图片对应显示
各位老师:
在GridView中如何用图片替换原来数据库字段中的文字,比如字段是“1”“2”“3”则分别用不同的GIF图片对应显示?

------解决方案--------------------
不知道你是要动态的还是半动态的

半动态的那就switch-case

其实动态的那种用得更多 一般多建张数据表 把那个字段和图片位置关联
这样更好维护
------解决方案--------------------
<img src= ' <%#Eval( "字段 ")%> .gif '>
------解决方案--------------------
你把图片名搞成1.gif,2.gif......
假如你图片的路径是path
然后在绑定private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
里写
if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
((Image)e.Item.Cells[0].FindControl( "ImageID ")).ImageUrl = this.Server.MapPath( "path " + e.Item.Cells[1].Text + ".gif ") ;
}
以上假设是你的Iamge在datagrid第一列,你那个什么1 2 3 4..在第2列,如果不要出现那个1 2 3 4 把第二列隐藏就可以鸟
------解决方案--------------------
<img src= ' <%#Eval( "字段 ")%> .gif '>
就是用这个最简单是。把不同装态图片命名为1,2,3,....直接绑定上就行了是。

------解决方案--------------------
你绑定你数据库的字段到一个列,再建一个模板列,放Image控件
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
swtch(e.Item.Cells[你绑定的列])
{
((Image)e.Item.Cells[你图片的列数].FindControl( "ImageID ")).ImageUrl = “你图片的路径” ;
}
}

------解决方案--------------------
顺便说一下,以后发短消息给我不要一发就是好几封,还是一样内容的!
------解决方案--------------------
也可以在摸版列里使用自定义方法

<%#ShowPic(Eval( "xx字段 "))%>

public string ShowPic(string x)
{
//判断处理
return " <img src=... ";
}
------解决方案--------------------
我给你一个把软件做大的建议:

1. 你可以在工程中选择增加一个用户控件文件,假设其名叫做“我的控件.ascx”。

2. 在其中拖入一个image控件。

3. 写上代码:
private int _num;

public int Num
{
set
{
_num = value;
}
}

protected override void OnPreRender(EventArgs e)
{
this.Image1.ImageUrl = "~/images/test " + _num.ToString() + ".jpg ";
base.OnPreRender(e);
}

4. 回到你的页面。在GridView中你要自由处理的这一列转换为模板列。

5. 编辑模板,从工程列表中把“我的控件.ascx”拖入。

6. 看你的GridView的代码,你可以看到:
<ItemTemplate>
<uc1:我的控件 ID= "我的控件1 " runat= "server " Num= "1 " />
</ItemTemplate>
此时你可以给我的控件的Num榜定数字。注意,使业务逻辑中的数字,而不是图片路径。路径是在控件中才自己生成的。


这并不比上面直接在GridView代码中去设计和写最底层的实现复杂多少,我觉得最多多花1分钟时间。实际上,当需求变得复杂的时候,这样做总是很干净利落的,理解和维护都很方便,责任层次清晰。

“我的控件.ascx”可以里边可以任意实现,从一个图片,到一个复杂的应用,不论如何实现,都自动插入页面中。对重要的、经常改变、你的程序的亮点的局部插件,完全应该这样先把它独立划分出来单独开发。
------解决方案--------------------
都说完了
------解决方案--------------------
mark
------解决方案--------------------
好像没我什么事了
------解决方案--------------------
同意孟子的方式,简单有效,容易扩展