如何循环遍历Datatable列并在vb.net中动态赋值给它?

时间:2012-06-28 03:54:16

标签: vb.net datatable vb.net-2010

我正在从XML中检索值并存储在数据表中,然后我将数据表值插入数据库。

Database表结构与我创建的数据表结构相同。

在下面的XML中,我只有3个节点(6个值包含EmpName和EmpID),所以我必须将这些节点值分配给我的数据表的前六列。数据表中的其余列应为空。我该如何循环?

注意:表结构仅固定为15个员工详细信息,这可能听起来很愚蠢,但这只是我的方案的一个示例,实际上与员工详细信息无关。如果XML中的节点超过15个,我将不得不忽略它。

XML:

<Employee>
    <add> 
      <EmpName>Ronaldo</EmpName>
      <EmpID>14</EmpID>
    </add>
    <add> 
      <EmpName>Messi</EmpName>
      <EmpID>15</EmpID>
    </add>
    <add> 
      <EmpName>David</EmpName>
      <EmpID>16</EmpID>
    </add>
  </Employee>

数据表:

        dt_FAQ.Columns.Add("Employee_1", GetType(String)) 
        dt_FAQ.Columns.Add("EmpID_1", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_2", GetType(String))
        dt_FAQ.Columns.Add("EmpID_2", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_3", GetType(String))
        dt_FAQ.Columns.Add("EmpID_3", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_4", GetType(String))
        dt_FAQ.Columns.Add("EmpID_4", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_5", GetType(String))
        dt_FAQ.Columns.Add("EmpID_5", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_6", GetType(String))
        dt_FAQ.Columns.Add("EmpID_6", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_7", GetType(String))
        dt_FAQ.Columns.Add("EmpID_7", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_8", GetType(String))
        dt_FAQ.Columns.Add("EmpID_8", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_9", GetType(String))
        dt_FAQ.Columns.Add("EmpID_9", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_10", GetType(String))
        dt_FAQ.Columns.Add("EmpID_10", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_11", GetType(String))
        dt_FAQ.Columns.Add("EmpID_11", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_12", GetType(String))
        dt_FAQ.Columns.Add("EmpID_12", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_13", GetType(String))
        dt_FAQ.Columns.Add("EmpID_13", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_14", GetType(String))
        dt_FAQ.Columns.Add("EmpID_14", GetType(String)) 
        dt_FAQ.Columns.Add("Employee_15", GetType(String))
        dt_FAQ.Columns.Add("EmpID_15", GetType(String))

1 个答案:

答案 0 :(得分:0)

尝试将此数据添加到您的行中,您可以替换“值”&amp; i.ToString()包含您的实际数据。

Dim workRow As DataRow
Dim i As Integer

workRow = dt_FAQ.NewRow()

For i = 0 To 28
  if(i % 2 == 0) {
     workRow(i) = node[Math.Floor(i/2)].EmpName
  }
  else 
  {
     workRow(i) = node[Math.Floor(i/2)].EmpID
  }
Next

dt_FAQ.Rows.Add(workRow)

HTH。