如果满足条件,我需要自动更新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
答案 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
希望这会给您一个大概的想法。