清清海水

得不到的就是喜欢
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# DataGrid with DataSet

Posted on 2005-08-08 21:49  清清  阅读(821)  评论(0)    收藏  举报

 //C# DataGrid with DataSet

using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;

public class DataGridSample:Form{
        DataGrid myGrid;
  
        SqlConnection con;
        SqlDataAdapter adapter;
        DataSet ds;
    Button ok, cancel;
       
        SqlParameter workParam = null;
       
        // apply to the columns in the table
        string query = "select CardNo,CardType,CardAmount, CardHolderName from CardTest";
       
        // change the Server ,uid, pwd and database accordingly
        string url = "server=TR4;uid=sa;pwd= ;database=RBSGTest";

 

        static void Main(){
        Application.Run(new DataGridSample());
        }

        public DataGridSample(){
        InitializeComponent();
        }

        public void InitializeComponent(){
        this.ClientSize = new System.Drawing.Size(550, 450);
        myGrid = new DataGrid();
        myGrid.Location = new Point (10,10);
        myGrid.Size = new Size(500, 350);
        this.Text = "C# DataGrid with DataSet - Example";
        this.Controls.Add(myGrid);
       
                ok = new Button();
                ok.Location = new Point(10, 375);
        ok.Size = new Size(70, 30);
                ok.TabIndex = 1;
                ok.Text = "OK";
                this.Controls.Add(ok); 
                ok.Click += new System.EventHandler(button_Click);

                cancel = new Button();
                cancel.Location = new Point(95, 375);
            cancel.Size = new Size(70, 30);
                cancel.TabIndex = 1;
                cancel.Text = "Cancel";
                this.Controls.Add(cancel);             
                cancel.Click += new System.EventHandler(button_Click);

        ConnectToData(); // establish database connection and create DataSet
        myGrid.SetDataBinding(ds, "CardTest");
        DataTable t = ds.Tables["CardTest"];
        t.RowChanged += new DataRowChangeEventHandler(Row_Changed);
  
        }
       
        public void ConnectToData(){
                ds = new DataSet();
            con = new SqlConnection(url);
            adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(query, con);
            adapter.Fill(ds, "CardTest");
                insertCommand();
                updateCommand();
        }
       
                public void updateCommand()
                {      
                string query = "Update CardTest Set CardHolderName = @CardHolderName, CardType = @CardType, CardAmount = @CardAmount WHERE CardNo = @CardNo";

                adapter.UpdateCommand = new SqlCommand(query, con);
       
            workParam = adapter.UpdateCommand.Parameters.Add("@CardNo", SqlDbType.NChar);
            workParam.SourceColumn = "CardNo";
            workParam.SourceVersion = DataRowVersion.Original;
       
            workParam = adapter.UpdateCommand.Parameters.Add("@CardType", SqlDbType.NChar, 50);
            workParam.SourceVersion = DataRowVersion.Current;
            workParam.SourceColumn = "CardType";

            workParam = adapter.UpdateCommand.Parameters.Add("@CardAmount", SqlDbType.Int);
            workParam.SourceColumn = "CardAmount";
            workParam.SourceVersion = DataRowVersion.Current;

            workParam = adapter.UpdateCommand.Parameters.Add("@CardHolderName", SqlDbType.NChar, 50);
            workParam.SourceColumn = "CardHolderName";
            workParam.SourceVersion = DataRowVersion.Current;
                }

       
          public void button_Click(object sender, EventArgs evArgs)
          {
                if (sender==ok){
                        UpdateValue(); // update the database once everything done.
                }
                if (sender==cancel) {
                        this.Dispose();
                }
        }

       
        private void Row_Changed(object ob, DataRowChangeEventArgs e)
          {
                DataTable t = (DataTable)  ob;
                Console.WriteLine("RowChanged " + e.Action.ToString() + "\t" + e.Row.ItemArray[0]);
          }
         
                public void insertCommand()
        {      
                string insertQuery = "Insert into CardTest VALUES (@CardNo, @CardType, @CardAmount, @CardHolderName)";
                adapter.InsertCommand = new SqlCommand(insertQuery, con);
       
            workParam = adapter.InsertCommand.Parameters.Add("@CardNo", SqlDbType.NChar);
            workParam.SourceColumn = "CardNo";
            workParam.SourceVersion = DataRowVersion.Current;
       
            workParam = adapter.InsertCommand.Parameters.Add("@CardType", SqlDbType.NChar, 50);
            workParam.SourceVersion = DataRowVersion.Current;
            workParam.SourceColumn = "CardType";

            workParam = adapter.InsertCommand.Parameters.Add("@CardAmount", SqlDbType.Int);
            workParam.SourceColumn = "CardAmount";
            workParam.SourceVersion = DataRowVersion.Current;
       
            workParam = adapter.InsertCommand.Parameters.Add("@CardHolderName", SqlDbType.NChar, 50);
            workParam.SourceVersion = DataRowVersion.Current;
            workParam.SourceColumn = "CardHolderName";
        }
       
       
        public void UpdateValue()
        {
            try
            {
              adapter.Update(ds, "CardTest");
              Console.Write("Updating DataSet succeeded!");
            }
            catch(Exception e)
            {
              Console.Write(e.ToString());
            }
        }
         
}