如果满足条件,如何自动更新devexpress gridview数据列值?

时间:2019-08-23 01:37:14

标签: vb.net devexpress aspxgridview

如果满足条件,我需要自动更新devexpress gridview数据列值。我尝试使用HtmldatacellPrepared实现它 但是在e.GetValue(“ Status”)=“ Delay”行出现错误:表达式是一个值,因此不能成为赋值的目标。还有其他方法可以用来实现吗?

Protected Sub Grid_HtmldatacellPrepared(sender As Object, e As ASPxGridViewTableDataCellEventArgs)
if e.GetValue("Forecast") IsNot DBNull.Value Then

  If e.DataColumn.VisibleIndex = 9 Then

     If e.GetValue("Forecast") > Date.Now Then

         e.GetValue("Status") = "Delay"        

     End if

  End If

End If

End Sub

2 个答案:

答案 0 :(得分:0)

使用 ASPxGridView.CustomColumnDisplayText 事件代替 ASPxGridView.HtmlDataCellPrepared 事件,并设置EventArgs e.DisplayText属性。查看我的答案here

答案 1 :(得分:0)

e.GetValue("...")是一个函数,因此您无法为其分配值。

我没有要测试的DevExpress组件,但是根据他们的在线文档,我在下面草拟了如何设置单元格值。

为了设置"Status"单元格的值,请处理网格的CustomColumnDisplayText事件。检测当前是否正在处理目标单元格(即"Status"),并使用e.DisplayText属性设置该值。

Protected Sub ASPxGridView1_CustomColumnDisplayText(ByVal sender As Object, ByVal e As DevExpress.Web.ASPxGridViewColumnDisplayTextEventArgs) Handles ASPxGridView1.CustomColumnDisplayText
    If e.Column.FieldName = "Status" Then
        Dim grid = DirectCast(sender, ASPxGridView)
        Dim forecast As Object = grid.GetRowValues(e.VisibleRowIndex,"Forecast")

        If forecast IsNot DBNull.Value AndAlso CDate(forecast) > Date.Now Then
            e.DisplayText = "Delay"
        End If 
    End If 
End Sub 

希望这会给您一个大概的想法。