0

嗨,这是我从查询中获取数据的代码,但我需要检查一些值,例如任何列中是否有 0,然后将其替换为 NA

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

那么有什么方法可以在绑定之前检查一些值并在数据表中进行编辑???

4

3 回答 3

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查询一直具有这些值。

于 2013-07-22T12:05:25.330 回答
1

首先,如果可能的话,我会修改您的 sql-queryFetchbooks以替换0N.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
于 2013-07-22T12:03:07.737 回答
1

当然:您可以遍历表,进行任何适当的值替换(假设您的替换值与来自查询的值类型兼容)。

就像是:

 For Each row as DataRow in dt.Rows
    if row("columnname") = "left" then 
       row("columnname") = "right" 
 Next

然后将其绑定到网格,您应该会看到更新后的值。

于 2013-07-22T12:04:52.513 回答