从代码看好象没什么问题,是不是一开始没有id这个列的,而是后来加进来的?
CreateDataSet主要做什么用的?

解决方案 »

  1.   

    一开始是没有id这个列,调用CreateDataSet函数是创建一个DataSet对象,这个应该没有问题。Dim DV as DataView=new DataView(DS.Tables("test"))是获得test表的DataView,里面
    只有一列(name),并且有记录,我的想法是在程序里再添加一列(id),并且赋值,然后重新生成dataView绑定到DataGrid上,但一绑定就出错了,说找不到id那一列。
       
      

  2.   

    那就很清楚了,一开始时没有id的DataColumn,但DataGrid里却设置了id,页面启动后在绑定数据时找不到id,当然会出错了。
    设置动态列的方法请看:
    http://www.tripleasp.net/article.aspx?NavID=27
      

  3.   

    好象找不到网页了:(
    我觉得你干脆把id也绑定到DataTable上去吧,然后让DataGrid的id列不显示就是了。
      

  4.   

    如果要显示的是自增的值(1,2,3,4...)那请看:
    http://expert.csdn.net/expert/topic/712/712987.xml
      

  5.   

    多谢各位,上面这个问题解决了,我把它放到Page_Load了,但是又出现新问题,我用上面的方法新增一列后,会更新到DataSet对应的Table(test)吗?因为我在对某一行进行编辑的时候,试图重新生成test表的DataView,绑定到DataGrid,这时又出现同样错误。
      

  6.   

    你的代码有问题,你试试一下修改后的代码:
    Dim DS As DataSet
    DS=CreateDataSet( )          
    Dim DT AS DataTable = DS.Tables("test")Dim DC AS DataColumn 
    DC = New DataColumn()
    With DC
        .ColumnName="id"
        .Caption = "id"
        .DataType = System.Type.GetType("System.Int32")
        .ReadOnly = False
    End WithDT.Columns.Add(DC) 
    Dim i As Integer=0
    Do while i<DT.Rows.Count
           dt.rows(i)("id")=i
           i=i+1
    Loop               MyDataGrid.DataSource=DT.DefaultView;
    MyDataGrid.databind()    
      

  7.   

    试了,第一个问题解决;第二个还没有,我不清楚这种添加列的方法是否可以更新到DataSet中,否则每次要从DataSet中生成test表的DataView岂不是都要在程序里新增id列?