【问题标题】:Conditional image in datagrid数据网格中的条件图像
【发布时间】:2011-01-05 15:30:10
【问题描述】:

我在 asp.net 和 vb.net 中有一个数据网格,我想用两个可能的图标显示某一行的项目的状态。

这样做最简单的方法是什么?

我有一个检查验证并返回布尔值的函数,该值使用数据网格的某些字段。

(你可以用c#回答)

【问题讨论】:

    标签: c# asp.net vb.net visual-studio datagrid


    【解决方案1】:

    您需要决定在页面代码隐藏中加载哪个图像。

    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";
        }
      }
    }
    

    【讨论】:

    • 我不明白'ListItemType.AlternatingItem'
    • AlternatingItem 与常规项类似,只是它每隔一行数据出现一次。如果你想用不同的样式对交替行进行 css 样式化,这很方便。 msdn.microsoft.com/en-us/library/…
    【解决方案2】:

    我应该说你最好的办法是使用 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
    

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多