在绑定到vb.net中的listview之前编辑Datable

时间:2013-07-22 11:54:47

标签: vb.net listview datatable

这是我从查询中获取数据的代码,但是我需要检查一些值,比如任何列中是否有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中编辑???

3 个答案:

答案 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查询始终显示这些值。