【发布时间】:2011-01-05 15:30:10
【问题描述】:
我在 asp.net 和 vb.net 中有一个数据网格,我想用两个可能的图标显示某一行的项目的状态。
这样做最简单的方法是什么?
我有一个检查验证并返回布尔值的函数,该值使用数据网格的某些字段。
(你可以用c#回答)
【问题讨论】:
标签: c# asp.net vb.net visual-studio datagrid
我在 asp.net 和 vb.net 中有一个数据网格,我想用两个可能的图标显示某一行的项目的状态。
这样做最简单的方法是什么?
我有一个检查验证并返回布尔值的函数,该值使用数据网格的某些字段。
(你可以用c#回答)
【问题讨论】:
标签: c# asp.net vb.net visual-studio datagrid
您需要决定在页面代码隐藏中加载哪个图像。
protected void Page_Init(object sender, EventArgs e)
{
// first you have to hook up the event
datagrid.ItemDataBound += datagrid_ItemDataBound;
}
// once the grid is being bound, you have to set the status image you want to use
private void datagrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) {
Image img = (Image)e.Item.FindControl("ImageControlName");
if( ValidationFunction() ) {
img.ImageUrl = "first_status_image.jpg";
}
else
{
img.ImageUrl = "second_status_image.jpg";
}
}
}
【讨论】:
我应该说你最好的办法是使用 TemplateColumn 和一些代码:
<asp:DataGrid runat="server" ID="DataGrid1" AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Image runat="server" ID="RowImage" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
Dim imageControl As Image
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
imageControl = DirectCast(e.Item.FindControl("RowImage"), Image)
If MyValidationFunction() Then
imageControl.ImageUrl = "icon1.gif"
Else
imageControl.ImageUrl = "icon2.gif"
End If
End If
End Sub
【讨论】: