2012-08-09 79 views
0

我在visual basic中發現了類似的問題,但沒有發現確切的結果和c#中的問題。將一個數據表的某些列複製到一個新的數據表

我想從10列數據表中使用INDEX(即1,4和5是索引,而不是它們的名稱/頭)複製某些列(比如1,4和5),並創建一個對象(我認爲數組/列表最好?),我會傳遞給form2。在form2中,我希望從這些數組/列表中創建一個新的數據表,因此它最終將有3列與原始數據表的第1,4和5列相同。我還希望在我傳遞它之前,根據我將在別處設置的真/假值刪除每個數組的第一個元素。

這裏的輪廓到目前爲止,我已經得到了( 'ALLDATA' 是我的數據表, 'CX' 是x列我想):

Form1中:

private void button2_Click(object sender, EventArgs e) //next 
    { 
     this.Hide(); 

     int c1 = 1; int c2 = 4; int c3 = 5 
     int[] 1st_col; int[] 2nd_col; int[] 3rd_col; 
     [assign c1th column to 1st_col, etc] 

     if (variable = marker_number) 
     { 
      [delete first element of each array] 
     } 

     Form2 step2 = new Form2(1st_col, 2nd_col, 3rd_col); 
     step2.ShowDialog(); 
    } 

窗體2:

public Form2(int 1st_col, int 2nd_col, int 3rd_col) 
    { 

     DataTable mytable1 = new DataTable();    
     [add 1st, 2nd, and 3rd cols to mytable1] 
     InitializeComponent(); 


    } 

如果還有什麼我應該提供的,請讓我知道!

回答

0

更新,試試這個:

Form1中

private void button2_Click(object sender, EventArgs e) 
    { 
     //10 column datatable 
     var dt10 = new DataTable("DT10"); 
     dt10.Columns.Add("PKID"); 
     dt10.Columns.Add("FName"); 
     dt10.Columns.Add("MName"); 
     dt10.Columns.Add("LName"); 
     dt10.Columns.Add("Address"); 
     dt10.Columns.Add("City"); 
     dt10.Columns.Add("State"); 
     dt10.Columns.Add("Zip"); 
     dt10.Columns.Add("Phone"); 
     dt10.Columns.Add("Fax"); 

     //give some sample data 
     dt10.Rows.Add(new object[] { 1, "Matt", "James", "Smith", "123 Main", "Philadelphia", "PA", "12141", "215-555-1111", "215-555-1212" }); 
     dt10.Rows.Add(new object[] { 2, "Mark", "James", "Smith", "123 Main", "Pittsburgh", "PA", "12141", "215-555-1111", "215-555-1212" }); 
     dt10.Rows.Add(new object[] { 3, "Luke", "James", "Smith", "123 Main", "Scranton", "PA", "12141", "215-555-1111", "215-555-1212" }); 
     dt10.Rows.Add(new object[] { 4, "John", "James", "Smith", "123 Main", "Reading", "PA", "12141", "215-555-1111", "215-555-1212" }); 
     dt10.Rows.Add(new object[] { 5, "Paul", "James", "Smith", "123 Main", "Harrisburg", "PA", "12141", "215-555-1111", "215-555-1212" }); 

     //create new datatable with subset of columns 
     var dt3 = new DataTable("DT3"); 
     dt3.Columns.Add("FName"); 
     dt3.Columns.Add("LName"); 
     dt3.Columns.Add("Phone"); 

     //indexes can be hardcoded or set at runtime 
     int c1 = 1; int c2 = 3; int c3 = 8; 

     //add all rows, but only the specified columns 
     foreach (DataRow r in dt10.Rows) 
     { 
      dt3.Rows.Add(new object[] { r[c1], r[c2], r[c3] });     
     } 

     bool includeFirstRow = chkIncludeFirstRow.Checked; 
     if (!includeFirstRow) 
     { 
      dt3.Rows.RemoveAt(0); 
     } 

     Form2 step2 = new Form2(dt3); 
     step2.ShowDialog(); 
    } 

窗體2

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    public Form2(DataTable dt) 
    { 
     InitializeComponent(); 
     //do your thing here, bind to datagridview or whatever 

    } 
} 
+0

我試圖得到這個工作,但首先是如何正確初始化DRC我得到錯誤「類型'System.Data.DataRowCollection'沒有定義構造函數」。我從來沒有遇到過這個問題 - 爲什麼它不使用默認的構造函數?另外,「oneRow」應該是什麼?我認爲這意味着像「alldata [i]」,但產生一個錯誤,說我可以用[]索引到'System.Data.DataTable'類型的表達式 – Hyung 2012-08-13 16:58:48

相關問題