2016-04-07 9 views
0

Gridのヘッダーの内容に動的DropDownをバインドしました。 DropDownは、テーブルの列名を含むだけです(列の数は変更可能です)。 DDLが選択されている場合は、列コンテンツ全体をそれぞれのテーブルに保存できるはずです。選択したヘッダー(ドロップダウン)に基づいてグリッドの内容をdbに保存します

私はコードの下にこれを試してみましたが、が、これは

string StrQuery; 
try 
{ 
    using (SqlConnection conn = new SqlConnection(ConnString)) 
    { 
     using (SqlCommand comm = new SqlCommand()) 
     { 
      comm.Connection = conn; 
      conn.Open(); 
      for(int i=0; i< dataGridView1.Rows.Count;i++) 
      { 
       StrQuery= @"INSERT INTO tableName VALUES (" 
        + dataGridView1.Rows[i].Cells["ColumnName"].Value +", " 
        + dataGridView1.Rows[i].Cells["ColumnName"].Value +");"; 
       comm.CommandText = StrQuery; 
       comm.ExecuteNonQuery(); 
      } 
     } 
    } 
} 

私の仕様を達成することはありません質問を理解してください。

は今、私は、データベース、私はこれを行うにはどうすればよい

にヘッダ選択に基づいて結果のグリッドを保存したい??

これを達成するための簡単な方法はありますか?

+0

私はあなたがグリッドビュー項目をループしていることを考えると、それを一つずつなどを挿入しますあなたは完了しました –

+0

そのドロップダウンの 'AutoPostBack = true'プロパティを設定しましたか? –

+0

何が間違っていましたか? –

答えて

1

'dataGridView1.Rows[i].Cellsの値を一度も見逃しました。それはこのようにする必要があります:

StrQuery= @"INSERT INTO tableName VALUES ('" 
      + dataGridView1.Rows[i].Cells["ColumnName"].Value +"', '" 
      + dataGridView1.Rows[i].Cells["ColumnName"].Value +"');"; 

私は強くあなたが常にSQL Injectionを避けるためにparameterized queriesを使用することをお勧めしますが:

StrQuery= @"INSERT INTO tableName VALUES (@col1, @col2)"; 
comm.Parameters.AddWithValue("@col1", dataGridView1.Rows[i].Cells["ColumnName"].Value); 
comm.Parameters.AddWithValue("@col2", dataGridView1.Rows[i].Cells["ColumnName"].Value); 
関連する問題