public void FileDataTable(int PageSize)
    {
        //循环加入行数为PageSize的行
        for (int i = 0; i < PageSize; i++)
        {
            DataRow newrow;
            if (mydatareader.Read())
            {
                //如果有记录,则把这条数据加入到datatable中
                //循环把列中的信息加入到新行中
                for (int j = 0; j < mydatareader.FieldCount; j++)
                {
                    newrow = mydatatable.NewRow();
                    newrow[j] = mydatareader[j].ToString();
                }
                mydatatable.Rows.Add(newrow);
            }
            else
            { 
                //如果没有,则跳出循环
                break;
            }
        }
    }
我已经写出了一些但是系统提示说不对
说mydatatable.Rows.Add(newrow);这行的newrow是使用了未赋值的局部变量
谢谢

解决方案 »

  1.   

    public void FileDataTable(int PageSize)
        {
            //循环加入行数为PageSize的行
            for (int i = 0; i < PageSize; i++)
            {
                DataRow newrow;
                if (mydatareader.Read())
                {
                    //如果有记录,则把这条数据加入到datatable中
                    //循环把列中的信息加入到新行中
                    for (int j = 0; j < mydatareader.FieldCount; j++)
                    {
                        newrow = mydatatable.NewRow();
                        newrow[j] = mydatareader[j].ToString();
                        mydatatable.Rows.Add(newrow);
                    }
                    
                }
                else
                { 
                    //如果没有,则跳出循环
                    break;
                }
            }
        }
      

  2.   

    以下示例通过调用 DataTable 对象的 NewRow 方法创建新的 DataRow。[Visual Basic] 
    Private Sub CreateNewDataRow()
        ' Use the MakeTable function below to create a new table.
        Dim myTable As DataTable
        myTable = MakeNamesTable()
        ' Once a table has been created, use the NewRow to create a DataRow.
        Dim myRow As DataRow 
        myRow = myTable.NewRow()
        ' Then add the new row to the collection.
        myRow("fName") = "John"
        myRow("lName") = "Smith"
        myTable.Rows.Add(myRow)
        
        Dim dc As DataColumn
        For Each dc in myTable.Columns
           Console.WriteLine(dc.ColumnName)
        Next
        DataGrid1.DataSource=myTable
     End Sub
     
     Private Function MakeNamesTable() As DataTable
        ' Create a new DataTable titled 'Names.'
        Dim namesTable As DataTable = new DataTable("Names") 
        ' Add three column objects to the table.
        Dim idColumn As DataColumn = new  DataColumn()
        idColumn.DataType = System.Type.GetType("System.Int32")
        idColumn.ColumnName = "id"
        idColumn.AutoIncrement = True
        namesTable.Columns.Add(idColumn)
        Dim fNameColumn As DataColumn = New DataColumn()
        fNameColumn.DataType = System.Type.GetType("System.String")
        fNameColumn.ColumnName = "Fname"
        fNameColumn.DefaultValue = "Fname"
        namesTable.Columns.Add(fNameColumn)
        Dim lNameColumn As DataColumn = new DataColumn()
        lNameColumn.DataType = System.Type.GetType("System.String")
        lNameColumn.ColumnName = "LName"
        namesTable.Columns.Add(lNameColumn)
        ' Create an array for DataColumn objects.
        Dim keys(0) As DataColumn 
        keys(0) = idColumn
        namesTable.PrimaryKey = keys
        ' Return the new DataTable.
        MakeNamesTable = namesTable
     End Function[C#] 
    private void CreateNewDataRow(){
        // Use the MakeTable function below to create a new table.
        DataTable myTable;
        myTable = MakeNamesTable();
        // Once a table has been created, use the NewRow to create a DataRow.
        DataRow myRow;
        myRow = myTable.NewRow();
        // Then add the new row to the collection.
        myRow["fName"] = "John";
        myRow["lName"] = "Smith";
        myTable.Rows.Add(myRow);
        
        foreach(DataColumn dc in myTable.Columns)
           Console.WriteLine(dc.ColumnName);
        dataGrid1.DataSource=myTable;
     }
     
     private DataTable MakeNamesTable(){
        // Create a new DataTable titled 'Names.'
        DataTable namesTable = new DataTable("Names"); 
        // Add three column objects to the table.
        DataColumn idColumn = new  DataColumn();
        idColumn.DataType = System.Type.GetType("System.Int32");
        idColumn.ColumnName = "id";
        idColumn.AutoIncrement = true;
        namesTable.Columns.Add(idColumn);
        DataColumn fNameColumn = new DataColumn();
        fNameColumn.DataType = System.Type.GetType("System.String");
        fNameColumn.ColumnName = "Fname";
        fNameColumn.DefaultValue = "Fname";
        namesTable.Columns.Add(fNameColumn);
        DataColumn lNameColumn = new DataColumn();
        lNameColumn.DataType = System.Type.GetType("System.String");
        lNameColumn.ColumnName = "LName";
        namesTable.Columns.Add(lNameColumn);
        // Create an array for DataColumn objects.
        DataColumn [] keys = new DataColumn [1];
        keys[0] = idColumn;
        namesTable.PrimaryKey = keys;
        // Return the new DataTable.
        return namesTable;
     }
      

  3.   

    最外层循环有问题啊
    while(mydatareader.Read())
    {
                DataRow newrow;
                if (mydatareader.Read())
                {
                    //如果有记录,则把这条数据加入到datatable中
                    //循环把列中的信息加入到新行中
                    for (int j = 0; j < mydatareader.FieldCount; j++)
                    {
                        newrow = mydatatable.NewRow();
                        newrow[j] = mydatareader[j].ToString();
                    }
                    mydatatable.Rows.Add(newrow);
                }
    }