2013-04-22 21 views
6

Tôi đang cố gắng viết một vài tiện ích mở rộng để chuyển đổi UniDataSetsUniRecords thành DataSetDataRow nhưng tôi gặp phải lỗi sau khi tôi cố gắng biên dịch.DataRow constructor không thể truy cập được khi viết phần mở rộng DataSet?

'System.Data.DataRow.DataRow (System.Data.DataRowBuilder)' là không thể tiếp cận do mức độ bảo vệ của nó

Có cách nào để sửa lỗi này hay tôi nên từ bỏ cách tiếp cận này và trở nó theo một cách khác?

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Data; 
    using IBMU2.UODOTNET; 

    namespace Extentions 
    { 
     public static class UniDataExtentions 
     { 
      public static System.Data.DataSet ImportUniDataSet(this System.Data.DataSet dataSet, IBMU2.UODOTNET.UniDataSet uniDataSet) 
      { 
       foreach (UniRecord uniRecord in uniDataSet) 
       { 
        DataRow dataRow = new DataRow(); 
        dataRow.ImportUniRecord(uniRecord); 
        dataSet.Tables[0].ImportRow(dataRow); 
       } 

       return dataSet; 
      } 

      public static void ImportUniRecord(this System.Data.DataRow dataRow, IBMU2.UODOTNET.UniRecord uniRecord) 
      { 
       int fieldCount = uniRecord.Record.Dcount(); 

       // ADD COLUMS 
       dataRow.Table.Columns.AddRange(new DataColumn[fieldCount]); 

       // ADD ROW 
       for (int x = 1; x < fieldCount; x++) 
       { 
        string stringValue = uniRecord.Record.Extract(x).StringValue; 
        dataRow[x] = stringValue; 
       } 
      } 
     } 
    } 
+0

Tôi không thấy nơi bạn đang cố gắng sử dụng constructor đó bất cứ nơi nào trong mã này? Lỗi nào xảy ra? –

+0

Dòng 17: DataRow dataRow = new DataRow(); – josh

Trả lời

18

Bất kể phương pháp mở rộng hay phương pháp nào cũng không quan trọng. Nhà xây dựng DataRow không thể truy cập công khai. Bạn cần sử dụng phương thức DataTable.NewRow() để tạo DataRow mới.

Nó sẽ sử dụng thông tin lược đồ từ bảng dữ liệu để tạo hàng khớp với nó. Nếu bạn chỉ cố gắng sử dụng hàm tạo trên chính nó thì đối tượng sẽ không biết lược đồ nào nên được sử dụng.

0

Tôi đã thử một cách tiếp cận đơn giản hơn, tuy nhiên nó là dành cho nhiều hàng và có thể được áp dụng cho một hàng duy nhất cũng như:

//Declare a variable for multiple rows 
DataRow[] rows = null; 

//get some data in a DataTable named table 

//Select specific data from DataTable named table 
rows = table.Select("column = 'ColumnValue'"); 

//Read the value in a variable from the row 
string ColumnValue = rows[0]["column"].ToString(); 

hy vọng điều này giúp ...

Các vấn đề liên quan