这是我从查询中获取数据的代码,但是我需要检查一些值,比如任何列中是否有0,然后将其替换为N.A.
Dim op As New cad
Dim dt As DataTable = op.Fetchbooks().Tables(0)
Dim sb As New StringBuilder()
Dim rp As System.Data.DataRow
If dt.Rows.Count > 0 Then
ListView1.DataSource = dt
ListView1.DataBind()
DropDownList1.DataSource = dt
DropDownList1.DataTextField = "Description"
DropDownList1.DataValueField = "Description"
DropDownList1.DataBind()
End if
所以有没有办法在绑定之前检查一些值并在datable中编辑???
答案 0 :(得分:1)
首先,如果可能的话,我会在Fetchbooks
中修改您的sql-query,而不是将0
替换为N.A.
。我假设您正在查询数据库。
但是,如果你想在内存中这样做:
For Each row As DataRow In dt.Rows
For Each col As DataColumn In dt.Columns
If row.IsNull(col) OrElse row(col).ToString = "0" Then
row(col) = "N.A."
End If
Next
Next
答案 1 :(得分:1)
当然:您可以遍历表格,使任何值替换都合适(假设您的替换值与查询的类型兼容)。
类似的东西:
For Each row as DataRow in dt.Rows
if row("columnname") = "left" then
row("columnname") = "right"
Next
然后将其绑定到网格,您应该会看到更新的值。
答案 2 :(得分:1)
获得DataTable
对象后,您可以根据需要对其进行操作:
For Each rp In dt.Select("COLUMN_A = '0'")
rp("COLUMN_A") = "N.A."
Next
请注意,这假定COLUMN_A
被定义为字符串类型,而不是数字。
如果您打算将此数据保存回源和,则不希望保存原始0
值而不是N.A.
。您可以在上述循环后立即添加dt.AcceptChanges
,以便Fetchbooks
查询始终显示这些值。