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

まず、可能であれば、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
于 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 に答える
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 に答える