2016-07-27 13 views
0

とC#でのDataGridViewから選択された行を印刷するには、どのように私は、SQLとC#でDataGridViewから行を選択し印刷することができます。次のコードを使用してSQLの最初の行のみが印刷されてどのようにSQL

現在
public partial class PrintScreen : Form 
{ 
    SqlConnection con = new SqlConnection(@"Server = TEST;DataBase=Registration;Integrated Security=true;"); 
    SqlDataAdapter da; 
    DataTable dt = new DataTable(); 

    public PrintScreen() 
    { 
     InitializeComponent(); 
     da = new SqlDataAdapter("select * from data_graduation", con); 
     da.Fill(dt); 
     this.dataGridView1.DataSource = dt; 
    } 

    private void Print_ys_ar_cert_Click(object sender, EventArgs e) 
    { 
     Print_ys_ar_cert frm = new Print_ys_ar_cert(); 
     da = new SqlDataAdapter("select * from data_graduation where ID_gra = '" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'", con); 
     da.Fill(frm.RegistrationDataSet1.data_graduation); 
     frm.reportViewer2.RefreshReport(); 
     frm.Show(); 
    } 
} 
+0

クエリのデータソースは次のようになります。 – Wamadahama

+0

最初の行のCells [0]の値を渡したためです。選択した行のセル[0]を渡す必要があります。 –

+0

また、データベースから行を一度ロードしたので、データベースから再度ロードする必要はありません。単にデータ表である報告する。 –

答えて

1

あなたがいますグリッドの最初の行のCells[0]の値を渡し、あなたが選択した行の値を渡す必要があります。

if(dataGridView1.SelectedRows.Count>0) 
{ 
    var selectedValue = dataGridView1.SelectedRows[0].Cells[0].ToString(); 
    //rest of code 
} 

一度データベースから行をロードしているので、あなたは、データベースから再びそれをロードする必要はありません、あなたはそれを単にデータテーブルに追加することができます。

var row = ((DataRowView)(dataGridView1.SelectedRows[0].DataBoundItem)).Row; 
frm.RegistrationDataSet1.data_graduation.Rows.Add(row.ItemArray); 
//rest of code 
+0

@ oks2016あなたはstackoverflowを初めて利用しているので、答えの近くにあるチェックマークをクリックすることで回答を受け入れることができます。回答を受け取る方法の詳細については、[this post](http://meta.stackexchange.com/questions/23138/how-to-accept-the-answer-on-stack-overflow)を参照してください。 –

関連する問題