CSharp – DataGrid with DataSet

Written by lopezatienza on 26/12/2008 – 09:52 -

Aquí os dejo un ejemplo de enlazar un DataGrid con DataSet.

Este ejemplo lo he tomado de: aquí

This is a simple C# Program that illustrate the usage of DataGrid with DataSet.

Create Database and Table accordingly.

/*
 * Simple C# example to illustrate the usage of Dataset with DataGrid
 * Need to change the url and query accordingly
*/
 

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());
            }
        }

}



Autor: Antonio Lopez Atienza


Tags: ,
Posted in CSharp | 2 Comments »

2 Comments to “CSharp – DataGrid with DataSet”

  1. edwin Says:

    Si pudieras subir el ejercicio para decargarlo seria mucho mejor.

  2. lopezatienza Says:

    Este código lo encontré en este enlace:

    http://www.csharphelp.com/archives/archive236.html

    Pero vamos que enlazar estos 2 componentes no tiene nada del otro mundo.

    Si te fijas en la funcion ConnectToData te crea el adaptador.

    public void ConnectToData()
    {
    ds = new DataSet();
    con = new SqlConnection(url);
    adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(query, con);
    adapter.Fill(ds, «CardTest»);
    }

Leave a Comment

 

RSS
MCC D5E