2

I have a gridview that is binded.

And i want to change the color of the font for the longest leadtime even if there are duplicates. I have no idea on how to write my if statement.

This is a rough idea of what i want to do, though I know this code is wrong.

if Max(LeadTime) Then

GridView.ForeColor = Color.Red

Can anyone help me?

4

2 に答える 2

3

まず、データソースから最大値を取得する必要があります。これはlinqで実行できます。

maxLeadTime = ds.Max(dsi => dsi.LeadTime)

アイテムデータバインドイベントハンドラーで、バインドされたアイテムを最大値と比較します。

if (item.LeadTime == maxLeadTime)
{
    /* do stuff */
}
于 2012-07-24T09:08:07.510 に答える
0

(VB.NETバージョン)グリッドをデータテーブルにバインドしていると仮定すると、これがその方法です。

 Private maxVal As Decimal

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Me.Page.IsPostBack Then
        dim dt as datatable = GetTable()
        maxVal = ds.AsEnumerable.Max(Function(dr) dr("lead_time"))
        gv.DataSource = dt
        gv.DataBind()
    End If
End Sub

Private Sub gv_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gv.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim dr As DataRowView = e.Row.DataItem
        If dr("lead_time") = maxVal Then
            e.Row.BackColor = Drawing.Color.Red
        End If
    End If
End Sub

(Tの)リストにバインドする場合も同じです

ページロードの場合:

 maxVal = urList.Max(Function(x) x.LeadTime)

行dataBound:

 Dim uc As urClass = e.Row.DataItem
        If uc.LeadTime = maxVal Then
            e.Row.BackColor = Drawing.Color.Red
        End If
于 2012-07-24T18:11:17.170 に答える