我有一个gridview,如果有签名,则当前返回“1”的列,否则返回0。如果每行的值为1,我想显示一个“Thumbs up”图像,如果为0则不显示。
这样做的最佳方法是什么?我在想某种方式使用rowdatabound事件,最好的方法是什么?
谢谢,
标记。
答案 0 :(得分:2)
另一种非常灵活的方法是使用模板列。这给了你很多自由。例如,您可以使用列的值将参数切换为img标记(或在两个img标记之间切换)和/或指定链接的参数。
我总是发现模板列非常简单。
答案 1 :(得分:2)
rowdatabound事件当然为您提供了执行此操作的能力。这样做非常简单直观。如上所述,您可以使用模板列。我可能只是使用模板列或图像字段来管理它:
<Columns>
<asp:ImageField HeaderText='Sign Off'
DataImageUrlField='<%# ThumbDisplay(Eval("SignOff")) %>' />
</Columns>
然后,您需要在代码隐藏中使用类似以下的方法:
protected string ThumbDisplay(int signoff)
{
return (signoff == 1) ? "~\thumbsup.png" : "~\thumbsdown.png";
}
http://www.asp.net/learn/data-access/tutorial-12-cs.aspx详细介绍了如何使用模板列。
最好的方法可能是适合您的其他显示需求的方法。其他栏需要类似的按摩吗?你可能最好在rowdatabound事件中一次性处理它。但是,如果它是您对数据的唯一修改,使用模板列或图像列,可能是最容易遵循的,并保持整个页面清洁。
答案 2 :(得分:1)
您应该能够使用图像列并将网址绑定到采用1或0的方法并返回正确的图像网址。请参阅http://msdn.microsoft.com/en-us/library/aa479350.aspx。
答案 3 :(得分:1)
这有点乱,但它都包含在模板标签中:
<ItemTemplate>
<img src='<%# (bool)Eval("signoff") ? "thumbsup" : "thumbsdown" %>.gif' alt="whatever" width="16" height="16" />
</ItemTemplate>
希望这有帮助!
答案 4 :(得分:0)
谢谢你们,我最后用一个边界域做了 - &gt; rowdatabound解决方案。
我已经发生了数据绑定事件代码,所以我只是添加了它。我在那里放了一个图像按钮控件,现在看起来不错(有点偏离中心,但我想它比以前更好)。
感谢您的建议,
标记。