프로그램/C# - Study / / 2010. 10. 18. 10:46

C# - EX05 DataGridView 활용

반응형


DB 데이터 불러올 버튼  추가

도구상자에서  윈폼에  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 을 사용한것이다!

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유