MSDN에서 찾았다.

컬럼을 지정해 주지 않고는 GridView에 데이터가 표현이 되지 않아서 어떻게 할까 했다

가변적으로 변하는 컬럼들의 이름과 타입때문에 직접받아와서 해 보고 했지만..

내키지 않아서 찾아본 결과.. 좋은 예가 있었다.

그 코드 내용은 다음과 같다.

OracleDataAdapter dataAdapter = new OracleDataAdapter("select * from test_khw", _connectionString);
                OracleCommandBuilder commandBuilder = new OracleCommandBuilder(dataAdapter);
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                dataGridView1.DataSource = table;*/
                //dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

데이터 베이스 종류를 바꿔서 이용할때는 각기 맞는 클래스로 변경해서 해 주면 출력이 된다.
[C#]GridView에 CheckBox 넣기 C# 2009. 3. 24. 13:07
먼저 테이블을 생성하고 그 테이블에 아래와 같이 넣어 주면 된다.

_tbl.Columns.Add("select", typeof(System.Boolean));

물론 GridView를 생성할때 VS를 이용해도 된다.

체크 유무의 값은 True와 False로 나타난다.

그 값을 확인하기 위해서는

GridView[i, j].Value를 이용하면 얻을 수가 있다!

필자는 것도 모르고 -_-;; 상태가 바뀔때마다 체크를 했다가

삽질아닌 삽질을 했다 ㅠ_ㅠ
일전에 쉽게 데이터 타입을 가져온 부분이다.

MSDN인가.. 거기서는 Row와 Column 이중 루프를 돌아서 받아오는 것을 봤었다.

하지만.. 코드 양도 줄이고 탐색 시간 면에서도 필자가 보기엔 이것이 더 좋은 것 같다.
                foreach (DataColumn col in ds.Tables[_table].Columns)
                {
                    if (i < _cloumntoken.Length)
                    {
                        if (col.ColumnName.ToString().Equals(_cloumntoken[i].ToString()))
                        {                           
                            lstColumn.Items.Add(col.DataType.ToString());
                            _type[i] = col.DataType.ToString();
                            i++;
                        }                       
                    }
                }

너무나 당연히 모두들 알고는 있지만 다이얼로그를 이용한 파일 열기에 대해서

주절거리는 시간이 왔다!!

OpenFileDialog open = new OpenFileDialog();

            open.Filter = "SQL File(*.sql)|*.sql|Config File(*.ini)|*.ini|AllFiles(*.*)|*.*";
            open.InitialDirectory = @"C:\";
            open.Title = "원하시는 파일을 선택해 주십시오";

            if (open.ShowDialog() == DialogResult.OK)
            {
                this.txt_Filepath.Text = open.FileName;
            }

먼저 다이얼로그의 객체를 생성한다.

다음은 필터다. 자기가 원하는 필터를 설정해 준 다음

기본 디렉토리를 정해 준다.

그럼.. 끝이다 -_-;;

Sava 다이얼로그도 같은 형식이다.

너무 기초적이라고들 하지만.. 난 이렇게 생각한다.

분명!! 모르는 사람 많다.

그래서.. 필자는;; -_-;; 올릴까 말까 하다가 스스로의 발전을 위해서

글을 올려본다.

[C#]Ping Test C# 2009. 3. 22. 18:27

C#으로 Ping을 테스트하는 방법이 없을까.. 하는 생각에 -_-;

그냥 무작정;; 바보같은 짓을 하다가 MSDN에 있는 코드를 발견했다 -_-;

Ping pingSender = new Ping();
PingOptions options = new PingOptions();

            // Use the default Ttl value which is 128,
            // but change the fragmentation behavior.
            options.DontFragment = true;

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 120;
            PingReply reply = pingSender.Send("127.0.0.1", timeout, buffer, options);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine("Address: {0}", reply.Address.ToString());
                Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
                Console.WriteLine("Time to live: {0}", reply.Options.Ttl);
                Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
                Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
            }

C#에서 지원하는 Ping, PingOption, PingReply, PingSender에 의해서 이루어지는 순서이다.
많은 분들이 당연히 알고 있으신 DataBase Connection에서 open()을 실행 했을시

conn.state 를 하면 Open의 유무를 알 수 있듯

여기에서는 PingReply에 의한 Status를 체크하여 성공 유무를 받아 처리한다.

하움.. -_- 확실한건.. 왠만하면 MSDN에서 먼저 찾아보자라는 것을 몸으로 느껴버린 사례이다 ㅠ_ㅠ
앞으로 갈 길은 많고.. 할 것도 많은.. Neo의 삽질은!!

계속된다!!
foreach문을 돌려서.. -_-

 얻어냈다.

Column에 대한 데이터를 난 그동안 무식하게도 -_-;; Reader를 통해서 했는데..

ADO.NET.. 강하다..

-_- 단지.. col(컬럼).DataType 하면 다 나왔다 -_-;;

다들 알고는 있을 것이다.

데이터 베이스의 필드의 값들은 타입이 정해져있다는 것을.

보통 System.String이나 System.Decimal 타입을 많이 쓴다.

물론 bool도 쓰겠지만 필자가 쓰는 경우는 저런 경우가 대다수라서..

다른 사항은 DataType에 대해서 직접 당겨써보면 알 것이다.


그동안 솔직히 이걸 얻기위해서 미련하게도

Column에대한 루프를 돌려서 Row와 Column 을 통해서 얻었다..

하지만.. -_-..

오늘 테스트 해 본결과 -_-; 난 역시 모르는게 많았다.

그 코드가 반 이상 줄 줄은..

-_- 지금은 정신이 몽~ 롱 한 관계로 코드는 내일 올려야겠다.

필자처럼 삽질하는 사람이 없기를 바라며..
ADO.NET을 요새 자주 이용한다

SqlConnection conn = new SqlConnectint(연결문);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandString = 쿼리;
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = cmd;
DataSet DS = new DataSet();
Adapter.Fill(DS,"테이블명");
데이터 그리드뷰.DataSource = DS.Tables[테이블명].DefaultView;

이런 식으로 이용한다.

솔직히 주로 ListView라던지 List를 이용해서 데이터를 보여주고 했었다.

Java를 할 경우 JTable을 이용해서 보이곤 했었는데

이놈을 접하니.. -_-b 라는 표현 밖에 안나온다;;

왜!! 엄청 편하니까!!

하지만 바인딩을 잘못시키면.. 전혀 의외의 결과가 나온다.

CheckBox를 포함하는 형으로 만들면서 잠시 멍하게 있었었다.

체크 유무를 가져오는 방법을 몰랐었기 때문이다 -_-

근데.. 의외로 간단한 면도 많았다.

데이터그리드.Rows[][].Value 를 하면

True와 False를 반환한다.

다음에 좀 더 많은 부분을 해보고 여기서 이만.. 줄여야겠다.
[C#]DataGridView에 대해서 C# 2009. 3. 18. 21:05
C#에서 데이터 그리드 뷰는 테이블을 생성하고 컬럼을 넣는다.

그 형식은

테이블명.Columns.Add("컬럼명",typeof(데이터타입));

을 해 주면 DataAdapter를 이용하지 않고 넣을 수 있다.

DataAdapter를 이용할 경우 Fill을 이용해서 DataSource를 적용시켜 표현한다.

물론 일일이 데이터를 적용시킬 때도 이용한다.

그 방식은
 
그리드뷰 Name.DataSource = 테이블명;

형식으로 사용한다.

DataGridView의 매력은 역시.. 사람들의 취향이겠지만

Adapter를 이용하는가?

개개의 데이터를 이용해서 꾸미는가?

차이인.. 것? 같다 ㅎㅎ

아직은 공부하는 입장이니 결론은 못내리겠다.

하지만 필자는 Adapter에 훨씬 매력을 느낀다
음.. -_-a 솔직히.. 보기 좋은건 필자는 ListView라고 생각하는데..

DataGrid의 강력함은 역시 좋았다 -_-;; 글고 UI도 ListView에 뒤지지 않았다;;

몇 만개의 데이터를 처리한다고 하면.. -_-;; 누구나 결과를 예상할 것이다;;

엄청난 과부하로 ListView는 -_-;; 죽어버린다;;

자신의 타입을 따라가는 것도 좋지만..

효율성과 자신의 개성을 따라가는 것이 중요한다.. ㅠ_ㅠ
[C#] 프린트 C# 2009. 2. 3. 21:56

흠.. 일단 간단한 프린트를 하기 위한 코드이다.

각 출력 결과에 따른 포멧 형식은 자신들이 정해야겠지만..

필자는 단지 출력 테스트를 한 것 뿐..

별 다른게 없다^_^

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace Print
{
    public partial class Form1 : Form
    {
        private PageSettings m_PageSetting = null;
        private Font m_subFont = new Font("굴림체",13);
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                PageSetupDialog Psetup = new PageSetupDialog();
                if (this.m_PageSetting == null)
                    this.m_PageSetting = new PageSettings();
                Psetup.PageSettings = this.m_PageSetting;
                Psetup.ShowDialog();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                PrintDocument pd = new PrintDocument();
                pd.PrintPage += new PrintPageEventHandler(this.PrintPageEvent);

                if (this.m_PageSetting != null)
                    pd.DefaultPageSettings = this.m_PageSetting;

                PrintPreviewDialog pdlg = new PrintPreviewDialog();
                pdlg.Document = pd;
                pdlg.ShowDialog();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        protected void PrintPageEvent(Object obj,PrintPageEventArgs pea)
        {
            Graphics g = pea.Graphics;
            PrintDocument(g);
            pea.HasMorePages=false;
        }

        private void PrintDocument(Graphics g)
        {
            g.FillRectangle(Brushes.White, 100, 50, 800, 600);
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;
            Rectangle rect = new Rectangle(110, 130, 400, this.m_subFont.Height * 10);
            g.DrawString(this.txt_Content.Text, this.m_subFont, Brushes.Black, rect);
        }

        private void button3_Click(object sender, System.EventArgs e)
        {
            try
            {
                PrintDocument pd = new PrintDocument();
                pd.PrintPage += new PrintPageEventHandler(this.PrintPageEvent);
                if (this.m_PageSetting != null)
                    pd.DefaultPageSettings = this.m_PageSetting;
                PrintDialog pdlg = new PrintDialog();
                pdlg.Document = pd;
                if (pdlg.ShowDialog() == DialogResult.OK)
                {
                    pd.Print();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}