2016-04-02 4 views
-1

私は本当にあなたの助けが必要です。上記のタイトルに誤りがあります。すべての操作は、datagridviewがクリックされたときに、選択されたレコードをテキストボックスに表示するだけでなく、新しいフォームを開く必要があります。ここに私のコードです。インデックスが範囲外でした。非負で、コレクションのサイズより小さくなければなりません。パラメータ名:index

あなたが最も可能性が高いこれらの呼び出しのいずれかの間に、範囲外の行を選択している
using System.Data;  
using System.Data.SqlClient; 

    namespace DataGridview 
    { 
     public partial class FrmDataGrid : Form 
     { 
      SqlConnection con = new SqlConnection("ConnectionString"); 
      public FrmDataGrid() 
      { 
       InitializeComponent(); 
      } 

      private void FrmDataGrid_Load(object sender, EventArgs e) 
      { 
       try { 
        con.Open(); 
        SqlCommand cmd = con.CreateCommand(); 
        cmd.CommandType = CommandType.Text; 
        cmd.CommandText = "SELECT * FROM UserData"; 

        cmd.ExecuteNonQuery(); 

        DataTable dt = new DataTable(); 
        SqlDataAdapter da = new SqlDataAdapter(cmd); 
        da.Fill(dt); 
        dataGridView1.DataSource = dt; 

        con.Close(); 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
      } 

      private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
      { 
       try 
       { 
        textBox1.Text = dataGridView1.SelectedRows[0].Cells["UserID"].Value.ToString(); 
        textBox2.Text = dataGridView1.SelectedRows[1].Cells["FullName"].Value.ToString(); 
        textBox3.Text = dataGridView1.SelectedRows[2].Cells["Username"].Value.ToString(); 
        textBox4.Text = dataGridView1.SelectedRows[3].Cells["UserPassword"].Value.ToString(); 
        textBox5.Text = dataGridView1.SelectedRows[4].Cells["UserRole"].Value.ToString(); 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 

       FrmUpdate FormUpdate = new FrmUpdate(); 
       FormUpdate.ShowDialog(); 
      } 
     } 
    } 
+0

エラーメッセージを読んで、あなたのデバッガを使用してください。それは存在しないコレクションの要素を求めていることを伝えています。最も可能性の高い原因は 'dataGridView1.SelectedRows [0]'です。セルをクリックすると5行が選択されていない可能性があります。 – Rob

答えて

0

あなたのdbクエリの。私はあなたが行の5列をフェッチしようとしていると思いますので、あなたの要件については、次のコードを使用します。

textBox1.Text = dataGridView1.SelectedRows[0].Cells["UserID"].Value.ToString(); 
textBox2.Text = dataGridView1.SelectedRows[0].Cells["FullName"].Value.ToString(); 
textBox3.Text = dataGridView1.SelectedRows[0].Cells["Username"].Value.ToString(); 
textBox4.Text = dataGridView1.SelectedRows[0].Cells["UserPassword"].Value.ToString(); 
textBox5.Text = dataGridView1.SelectedRows[0].Cells["UserRole"].Value.ToString(); 
+0

ありがとうございます。私はちょうど把握し、あなたの答えは正しいです。私はあなたの親切な助けに感謝します。しかし、どうすればそれらのデータを新しい形式に送ることができますか? – Brownsugar

+0

上記のコードを教えてください。データグリッドビューのセルをクリックすると、選択したレコードで新しいフォームを開くことができますか?前もって感謝します。 – Brownsugar

0

:あなたも5行が結果に存在することを確認せずに5行をフェッチしようとしている dataGridView1.SelectedRows[0]

関連する問題

 関連する問題