none
DefaultValuesNeededで複数レコードを追加する場合 RRS feed

  • 質問

  • 度々、お世話になっております。

    datagridviewでDBのデータを追加する際の質問です。

        private void dataGridViewUsers_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
    
        {
    
          da.SelectCommand = new NpgsqlCommand
    
          (
    
              "select"
    
            + " id"
    
            + " from"
    
            + " users",
    
            m_conn
    
          );
    
          da.Fill(Cntds, "users");
    
    
          if (0 != Cntds.Tables["users"].Rows.Count)
    
          {
    
            e.Row.Cells["id"].Value = Cntds.Tables["users"].Rows.Count + 1;
    
          }
    
        }
    

    [id]カラムの規定値にレコードの総数+1を設定しているわけですが

    この方法だと、新規レコードが1レコードの場合は難なく追加させることができるのですが

    複数のレコードとなると[id]に同じ値がセットされてしまいます。

     

    このような場合うまく追加できる方法をご指導ください。

     

    2010年12月12日 13:42

回答

  • idが連番であればよいという前提での回答です。
    以下で連番を振ってくれます。

    private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e) {
      dataGridView1.Rows[e.Row.Index].Cells["id"].Value = e.Row.Index + 1;
    }
    

    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/
    • 回答としてマーク oira3ryu 2010年12月12日 22:23
    2010年12月12日 17:15

すべての返信

  • この方法だと、新規レコードが1レコードの場合は難なく追加させることができるのですが

    複数のレコードとなると[id]に同じ値がセットされてしまいます。

     

    このような場合うまく追加できる方法をご指導ください。

     

    idカラムに設定する値の仕様を確認させてください。idは単純に連番であればよいのでしょうか?


    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/
    2010年12月12日 16:01
  • idが連番であればよいという前提での回答です。
    以下で連番を振ってくれます。

    private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e) {
      dataGridView1.Rows[e.Row.Index].Cells["id"].Value = e.Row.Index + 1;
    }
    

    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/
    • 回答としてマーク oira3ryu 2010年12月12日 22:23
    2010年12月12日 17:15
  • J.Hashimoto様、ありがとうございます。

    e.Row.Index+1してまた、dgvに戻してやればよかったんですね。

    おかげで希望の動作となりました。

    ありがとうございました!

    2010年12月12日 22:27