2017-01-14 10 views
0

のIm Beginerにロードし、ネット上で見つけたスピンコードを実行しようとします。DataGridの最初の列をC#

私の心配は、データグリッドの最初の行の値が欲しいということです。テキストボックスにフォームを起動すると自動的にロードされます。

私はこのコードをうまく動作させていますが、データグリッドラインをクリックしなければテキストボックスに値が表示されません。

コード:

namespace SQLiteTEST 
{ 
public partial class Form1 : Form 
{ 
    private SQLiteConnection connection; 

    private String SQLSelect = "SELECT * FROM User"; 

    public Form1() 
    { 
     InitializeComponent(); 

     connection = new SQLiteConnection("Data Source=BddTest.s3db;Version=3;"); 
    } 

    private void search() 
    { 
     dataGrid1.RowEnter -= dataGrid_RowEnter; 

     if (connection.State != ConnectionState.Open) 
      connection.Open(); 

     SQLiteCommand command = connection.CreateCommand(); 
     command.CommandText = SQLSelect; 

     DataTable dt = new DataTable(); 
     SQLiteDataAdapter da = new SQLiteDataAdapter(command); 
     da.Fill(dt); 
     dataGrid1.DataSource = dt; 
     connection.Close(); 
     dataGrid1.RowEnter += dataGrid_RowEnter; 
    } 

    private void dataGrid_RowEnter(object sender, DataGridViewCellEventArgs e) 
    { 
     int ID = int.Parse(dataGrid1.Rows[e.RowIndex].Cells[0].Value.ToString()); 
     String Data1 = (String)dataGrid1.Rows[e.RowIndex].Cells[1].Value; 
     txtId.Text = ID.ToString(); 
     txtName.Text = Data1; 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     search(); 
    } 

    private void dataGrid_DataError(object sender, DataGridViewDataErrorEventArgs e) 
    { 
     MessageBox.Show("erreur"); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     var form_programme = new Form2(); 
     form_programme.Show(); 
     this.Hide(); 
    } 

    private void dataGrid1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 

    } 

    private void txtName_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void txtId_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void dataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 

    } 

} 

}

どのように私はそれをクリックしているかのように最初の行はテキストボックスに表示させることができますか?

アドバイスやサンプルコードをお寄せいただきありがとうございます。

+0

は、row_selectedイベントを同じコードまたは行コマンドイベントでトリレングしましたか? –

+0

このイベントを試すことができますか? void dataGridView1_SelectionChanged(オブジェクト送信者、EventArgs e) { //選択後に発生するコード } –

+0

が動作しません。 – Vozerpa

答えて

0

このような方法で作成:

private object GetValue(int rowIndex, int columnIndex) 
{ 
    return dataGrid1.Rows[rowIndex].Cells[columnIndex].Value; 
} 

をテキストボックスにフォームを起動するとき、私はデータグリッドの最初の行の値を希望、自動的にロードします。

これを使用して必要な値を取得します。データがグリッドにロードされた後、あなたのsearch方法では、最後に、あなただけの最初の行から値を取得する必要がありますので、あなたのローカル変数はラクダでなければなりません

// first row first column. 
// Use TryParse if the value is not always a number. If always a number 
// then Parse is good enough 
int id = int.Parse(GetValue(0, 0).ToString()); 
string data1 = (String) GetValue(0, 1); 
txtId.Text = id.ToString(); 
txtName.Text = data1; 

。また、.NETの命名規則を使用しますあなたのメソッド名はパスカル記法でなければなりません。 searchSearchである必要があります。

+0

「int.Parse(GetValue(0、0);」は、 ')'がありませんでした。私は答えを修正した。 – CodingYoshi

+0

visual srudioが教えてください:オーバーロードされたメソッドに無効な引数があります。これは次のとおりです。int ID = int.Parse(GetValue(0、0));奇妙なwheb私は試してみてください:プライベートvoid button1_Click(オブジェクト送信者、EventArgs電子) { var form_programme = new Form2(); form_programme.Show(); this.Hide(); } thatsはform2で動作しますか?しかし、データベースからテキストボックスに最初の行をロードするコードはどうすればよいですか?もっと単純にすることはありませんか? – Vozerpa

+0

私は別の編集をしましたが、今は 'int id = int.Parse(GetValue(0、0).ToString());です。 ' – CodingYoshi

0

私は自分の問題を解決する方法を見つける!

public Form1() 
{ 
    InitializeComponent(); 
    connection = new SQLiteConnection("Data Source=BddTest.s3db;Version=3;"); 
    search();} 

視点: 病気は、これを行います。

関連する問題