Vb.net 财产';项目';是';只读';

Vb.net 财产';项目';是';只读';,vb.net,visual-studio-2010,visual-studio,Vb.net,Visual Studio 2010,Visual Studio,当我运行我的代码时,我得到了上面的错误。我认为这是因为DataReader是只读的,因此无法修改值。作为一个新用户,仍然在学习来自php/mysql背景的vb.Net,有人能告诉我正确的编码方法吗?或者提供一种替代方法。非常感谢 While dr.Read() If dr.HasRows Then lvRequests.Items.Add((dr(0)).ToString()).UseItemStyleForSubItems = False

当我运行我的代码时,我得到了上面的错误。我认为这是因为DataReader是只读的,因此无法修改值。作为一个新用户,仍然在学习来自php/mysql背景的vb.Net,有人能告诉我正确的编码方法吗?或者提供一种替代方法。非常感谢

     While dr.Read()
        If dr.HasRows Then

          lvRequests.Items.Add((dr(0)).ToString()).UseItemStyleForSubItems = False
          lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add(CDate(dr(5)).ToShortDateString())
          lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add(dr(1).ToString())
          With lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add(dr(3).ToString())
             If dr(3) Is "D" Then    
                dr(3) = "destroyed"  <--- ERROR

             ElseIf dr(3) Is "O" Then
                dr(3) = "out"        <--- ERROR

             End If

           End With

           lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add(dr(9).ToString())

           lvcount += 1
         End If

    End While
Read博士()
如果哈斯罗博士
lvRequests.Items.Add((dr(0)).ToString()).UseItemStyleForSubItems=False
lvRequests.Items(lvRequests.Items.Count-1).SubItems.Add(CDate(dr(5)).ToShortDateString())
lvRequests.Items(lvRequests.Items.Count-1).SubItems.Add(dr(1).ToString())
使用lvRequests.Items(lvRequests.Items.Count-1).SubItems.Add(dr(3).ToString())
如果dr(3)为“D”,则

dr(3)=“已销毁”您不能更改数据读取器的值。而不是这个

      With lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add(dr(3).ToString())
         If dr(3) Is "D" Then    
            dr(3) = "destroyed"  <--- ERROR

         ElseIf dr(3) Is "O" Then
            dr(3) = "out"        <--- ERROR

         End If

       End With

不能更改
数据读取器中字段的值。填写一个
DataTable
,您可以修改它,或者更好地更改SQL中已有的值。请举个例子。感谢没有更多信息的困难。您尚未提供表的架构,但可以在sql中使用
CASE
。我是否可以基于代码创建子项?感谢您可以为读取器返回的每一行创建一个
对象
,然后修改
对象
的属性。然而,我有一个问题。我需要修正而不是补充。这只是添加了另一列,并阻止了我的第4列displaying@user1532468我不明白你的意思。对不起,我的错。Thanks@user1532468没问题;)
         If dr(3).ToString() = "D" Then    
            lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add("destroyed")

         ElseIf dr(3).ToString = "O" Then
            lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add("out")

         Else

            lvRequests.Items(lvRequests.Items.Count - 1).SubItems.Add(dr(3).ToString())
         End If