도구상자에서 윈폼에 DataGridView 을 추가 그리고 ClickCell 이벤트를 춘다 Cell 을 클릭 했을시
버튼을 클릭하면 DB 내용을 불러온다.
상위 DataGridView 클릭시 릴레이션된 테이블을 불러오는걸 하기위해
다시 윈폼에 DataGridView 을 추가
도구상자에서 윈폼에 DataGridView 을 추가 그리고 ClickCell 이벤트를 준다다 Cell 을 클릭 했을시 발생하는 이벤트를 하기 위해
이런식으로 Cell 클릭 했을시 이벤트가 발생하여 아래 DataGridView 에 릴레이션된 테이블 DB가 나온다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Ex05
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "SERVER=.;DATABASE=Northwind;INTEGRATED SECURITY=SSPI;";
//2. 명령 객체 생성 및 [SQL, 연결객체] 설정
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT customerid, companyname, contactname, contacttitle, country, phone, fax FROM customers ";
//데이터 처리 어댑처 사용
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
// Open - > read &set -> Close 를 해준다.
//이미 열려있으면 Open 및 Close 생략 해준다.
da.Fill(ds, "Customers"); //DataSEt에 Customers 테이블 만들고 그 테이블에 데이터를 저장
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Customers"; //DataSet 내부의 테이블 이름
}
//DataGridView 셀을 클릭 했을때 이벤트
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if(e.RowIndex < 0)
{
return;
}
//클릭한 행 가져온다(e.RowIndex)
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
// 그 셀중에 0 번째 값을 가져온다. 문자열로 변환해 넘겨준다
string customerId = row.Cells[0].Value.ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "SERVER=.;DATABASE=Northwind;INTEGRATED SECURITY=SSPI;";
//2. 명령 객체 생성 및 [SQL, 연결객체] 설정
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText =
"SELECT orderid,orderdate,requireddate,shipcountry " +
"FROM orders WHERE customerid = @customerid";
cmd.Parameters.AddWithValue("@customerid", customerId);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "Orders");
//dataGridView2.DataSource = ds.Tables[0];
dataGridView2.DataSource = ds.Tables["Orders"];
}
private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
return;
DataGridViewRow row = dataGridView2.Rows[e.RowIndex];
int orderId = (int)row.Cells[0].Value;
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"SERVER=.;" +
"DATABASE=Northwind;" +
"INTEGRATED SECURITY=SSPI;";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText =
"SELECT orderid, productid, unitprice, quantity, discount " +
"FROM [order details] WHERE orderid = @orderid";
cmd.Parameters.AddWithValue("@orderid", orderId);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView3.DataSource = dt;
}
}
}
우리는 DataAdapter 의 Fill 을 사용한것이다!
'프로그램 > C# - Study' 카테고리의 다른 글
C# - EX05 SHOWDATA, UPDATA 추가 (0) | 2010.10.18 |
---|---|
C# - EX04 SqlTransaction, TransactionScope 활용 (0) | 2010.10.18 |
C# - Ex03 - MSSQL 과 C# 연동 - 불러오기 와 삭제 (윈폼 버젼) (1) | 2010.10.14 |
C# - EX02 - MSSQL 과 C# 연동 효율적인 방법 ( 콘솔버젼 ) (0) | 2010.10.14 |
C# - EX01 - MSSQL 연동 ( 콘솔 버젼 ) (1) | 2010.10.13 |