mysql update

Status
Niet open voor verdere reacties.

janbe63

Gebruiker
Lid geworden
21 okt 2007
Berichten
64
Beste,

Ik heb een standaardform gemaakt, een 1 datagridview en een bindingsource

Dit is de standaard form.

Code:
        public Form1()
        {
            InitializeComponent();
            MySqlConnection conn;
            MySqlDataAdapter myadp;
            MySqlDataAdapter myadp1;
            DataSet myds;
            DataSet myds1;
            string MyConnectionString;
            string sql;

            MyConnectionString = "server = xxx; uid = xxx; pwd = xxx; database = xxx";

            conn = new MySqlConnection();
            conn.ConnectionString = MyConnectionString;
            conn.Open(); //(opened)

            myadp = new MySqlDataAdapter("select T1.products_id id,products_quantity hoeveelheid,products_name naam from products T1 INNER JOIN products_description T2 ON T1.products_id=T2.products_id", conn);
            myds = new DataSet();
            myadp.Fill(myds, "table1");
            bindingSource1.DataSource = myds.Tables["table1"];

            dataGridView1.DataSource = bindingSource1;

            conn.Close();
    }

Dit werkt goed, nu wil ik graag dat als ik 1 van de velden verander dat hij dit gelijk ook in de database verandert. Aangezien ik de enige gebruiker ben kan dit niet veel kwaad.

Hoe moet ik de code aanpassen/toevoegen?

Jan
 
Hoi Jan,

Aangezien je per cel een waarde wil veranderen, kun je gebruik maken van de CellValueChangeEvent van je DataGridView.
Hieruit kun je de cel opvragen (deze heeft een row en column).

Dit is niet heel handig! Je kunt beter gebruik maken van een knop die alles in één keer wegzet. http://csharp.net-informations.com/dataadapter/datagridview-sqlserver.htm
Als je toch gebruik wil blijven maken van een update per cel, zie onderstaande code. Ik heb een aanzet gemaakt.

Code:
public Form1()
{
  // ...
  // Jouw standaard code
  // ...
  
  // Voordat je de trigger kan laten afgaan als er een celwaarde is veranderd, moeten we dit vertellen aan de datagridview
  // Dit doen we door gebruik te maken van een Event Handler, deze wil als parameter de methodenaam die hij vervolgens uitvoert.
  dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
}

/*
 * Deze methode wordt automatisch aangeroepen als er een celwaarde veranderd is.
 * Let op: Foutafhandeling is hierin niet verwerkt!
 */
public void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    int row = e.RowIndex;
    int column = e.ColumnIndex;
    string cellValue = dataGridView1.Rows[row].Cells[column].Value.ToString();
    
    updateDatabase(cellValue);
}

/*
 * Jouw code om de database direct te veranderen
 */
private void updateDatabase(string cellValue)
{
  // Verder aan te vullen
}

Ik hoop dat ik je enigszins de goede richting in heb geholpen.


Vriendelijke groeten,

d0mzy
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan