2013-11-22 26 views
6

からのDataGridViewを作成します。私はgridを調べるとは、プログラム私は次のコードを持っているのDataTable

DataTable table = new DataTable(); 

//DataTable is filled with values here... 

DataGridView grid = new DataGridView(); 

foreach (DataColumn column in table.Columns) 
{ 
    grid.Columns.Add(column.ColumnName, column.ColumnName); 
} 

grid.DataSource = table; 

を、DataSource属性は、行数が正確であることを示しています。ただし、grid.Rowsの数はゼロです。これとは対照的に

が、私はWinフォーム上DataGridViewを作成し、そのDataSourceDataTableに割り当てた場合、DataGridView.Rowsが自動的に追加されます。

DataGridView.Rowsが正しくなるようにするには、ここではどのコードを入力しなくていいですか?

+0

質問は、ディスプレイとは何かありますか?正しい? – OneFineDay

+0

列を追加せずに単純にデータソースとしてテーブルを指定すると、行が表示されますか? – rune711

+0

'AutoGenerateColumns'プロパティ? – OneFineDay

答えて

5

このDataGridViewコントロールをプログラムでフォームに追加すると、それが機能します。 誰かがなぜその理由を教えてくれるのですか?

DataTable table = new DataTable(); 

//DataTable is filled with values here... 

DataGridView grid = new DataGridView(); 

// assuming (this) is a reference to the current form 
this.Controls.Add(grid); 

grid.DataSource = table; 
0
DataTable table = new DataTable(); 

//DataTable is filled with values here... 

DataGridView grid = new DataGridView(); 

grid.DataSource = table; 

それとも

foreach (DataColumn column in table.Columns) 
{ 
    grid.Columns.Add(column.ColumnName, column.ColumnName); 
} 

grid.Rows.Add(table.Rows.count); 
Int32 i=0; 
foreach (DataRow rw in table.Rows) 
{ 
grid.Rows[i].Cell[0].value = rw["col1"].ToString(); 
i+=1; 

} 

0
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
      try 
      { 
       if (e.ColumnIndex == 5) 
       { 
        string Task = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(); 
        if (Task == "Delete") 
        { 
         if (MessageBox.Show("Bạn có chắc chắm muốn xóa không?", "Đang xóa...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
         { 
          int rowIndex = e.RowIndex; 
          dataGridView1.Rows.RemoveAt(rowIndex); 
          dataset.Tables["tbl_students"].Rows[rowIndex].Delete(); 
          sqlAdapter.Update(dataset, "tbl_students"); 
         } 
        } 
        else if(Task == "Insert") 
        { 
         int row = dataGridView1.Rows.Count - 2; 
         DataRow dr = dataset.Tables["tbl_students"].NewRow(); 
         dr["id"] = dataGridView1.Rows[row].Cells["id"].Value; 
         dr["name"] = dataGridView1.Rows[row].Cells["name"].Value; 
         dr["address"] = dataGridView1.Rows[row].Cells["address"].Value; 
         dr["phone"] = dataGridView1.Rows[row].Cells["phone"].Value; 
         dr["email"] = dataGridView1.Rows[row].Cells["email"].Value; 
         dataset.Tables["tbl_students"].Rows.Add(dr); 
         dataset.Tables["tbl_students"].Rows.RemoveAt(dataset.Tables["tbl_students"].Rows.Count - 1); 
         dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 2); 
         dataGridView1.Rows[e.RowIndex].Cells[5].Value = "Delete"; 
         sqlAdapter.Update(dataset, "tbl_students"); 
        } 
        else if (Task == "Update") 
        { 
         int r = e.RowIndex; 
         dataset.Tables["tbl_students"].Rows[r]["id"] = dataGridView1.Rows[r].Cells["id"].Value; 
         dataset.Tables["tbl_students"].Rows[r]["name"] = dataGridView1.Rows[r].Cells["name"].Value; 
         dataset.Tables["tbl_students"].Rows[r]["address"] = dataGridView1.Rows[r].Cells["address"].Value; 
         dataset.Tables["tbl_students"].Rows[r]["phone"] = dataGridView1.Rows[r].Cells["phone"].Value; 
         dataset.Tables["tbl_students"].Rows[r]["email"] = dataGridView1.Rows[r].Cells["email"].Value; 
         sqlAdapter.Update(dataset, "tbl_students"); 
         dataGridView1.Rows[e.RowIndex].Cells[5].Value = "Delete"; 
        } 
       } 
      } 
      catch (Exception ex) { 
       MessageBox.Show(ex.Message); 
      }   
} 

このコードを試してみてくださいウェブサイトの詳細にアクセスしてください:http://laptrinhvb.net/bai-viet/chuyen-de-csharp/Lap-trinh-ung-dung-them---xoa---sua-truc-tiep-tren-DataGridview-(Crub-database-on-DataGridview-use-Cshap)/e95de75579022678.html

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - http://stackoverflow.com/help/how-to-answer –

関連する問題