изменение значений столбца в datatable в vb.net - PullRequest
2 голосов
/ 20 января 2012

Я хочу просмотреть цикл данных и изменить значения определенного столбца в этой таблице данных.

Например: база данных возвращает Request_ID, Desc, Date и Status_Ind.Столбец Status_Ind содержит целочисленные значения.Я не хочу показывать целочисленные значения пользователю.Я хочу преобразовать это в строковое значение на основе целочисленных значений, возвращаемых в этих столбцах.

if Status_Ind = 1 then 
    'the values changes to Published

Ответы [ 2 ]

4 голосов
/ 20 января 2012

Предполагается, что ваш DataTable определен следующим образом:

Dim dt As DataTable

Сначала вам нужно добавить новый столбец в таблицу данных для хранения статуса:

dt.Columns.Add("Status", Type.GetType("System.String"))

Теперь переберите DataTable и обновите столбец состояния:

For Each dr As DataRow In dt.Rows
    Select Case CInt(dr.Item("Status_Ind"))
        Case 1
            dr.Item("Status") = "Published"
        Case 2
            dr.Item("Status") = "Some other Status"
        Case Else
            dr.Item("Status") = "Unknown"
    End Select
Next

Тогда вы можете удалить целочисленный столбец:

dt.Columns.Remove("Status_Ind")
3 голосов
/ 20 января 2012

Вы можете сделать это, создав другой столбец:

Dim dt As New DataTable
dt.Columns.Add(New DataColumn("status_int", GetType(Int32)))
dt.Columns.Add(New DataColumn("status_str", GetType(String)))

'add example row - not publised
Dim newDr0 As DataRow = dt.NewRow
newDr0(0) = 0
dt.Rows.Add(newDr0)

'add example row - publised
Dim newDr1 As DataRow = dt.NewRow
newDr1(0) = 1
dt.Rows.Add(newDr1)

For Each dr As DataRow In dt.Rows
    Select Case dr(0)
        Case 1
            dr(1) = "Published"
        Case Else
            dr(1) = "Not published"
    End Select
Next

For Each dr In dt.Rows
    Console.WriteLine(dr(0).ToString + " " + dr(1).ToString)
Next
...