我想知道是否有人曾经设法找到在模板字段中有一个datagridview image按钮列的方法,它根据行中的某些数据元素在不同的行上显示不同的图像。我们的应用程序需要显示一系列针对帐户列收取的费用,这些费用要么小于500,500到1000,要么大于1000。这些费用中的一些是全额收费的,另一些是部分收费的,还有一些根本不收费。用户希望看到一个简单的3状态图形,它将传达简单的信息:完全充电、部分充电或不充电。听起来很简单,但我还没有找到一种方法来做到这一点。每次我尝试修改单个单元格的图形时,它似乎都想更改所有行的图形。
有什么办法解决这个问题吗?
谢谢,
发布于 2010-10-22 19:45:09
您可以使用以下命令完成此操作
<TemplateField>
<ItemTemplate>
<asp:ImageButton runat="server" ImageUrl='<%# GetImage(Eval("check") as string) %>' />
</ItemTemplate>
</TemplateField>其中GetImage()是代码隐藏中的一个方法:
protected string GetImage(string check)
{
if ((check == "2") || (check == "null") || (check == "3") || (check == "-1"))
{
return "../Interbacs/images/error.gif";
}
else if (check == "1")
{
return "../Interbacs/images/ok.png"
}
return "what?";
}这也许可以做得更“漂亮”一点,但我希望你能理解。
发布于 2010-10-22 19:52:20
您可以在datagridview CellPainting中更改图像。
eg:
private void datagridview_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex == 1 && e.RowIndex >= 0)
{
if (Convert.ToInt32 (datagridview.Rows[e.RowIndex].Cells["columnName"].Value)<500)
{
e.Paint(e.CellBounds, DataGridViewPaintParts.All);
e.Graphics.DrawImage('Give Image path here', e.CellBounds.Left + 5, e.CellBounds.Top + 5);
}
}
} 或检查此http://www.codeproject.com/KB/grid/DGV_ImageButtonCell.aspx/
https://stackoverflow.com/questions/3996222
复制相似问题