J'ai essayé de mettre à jour des lignes sélectionnées dans DataGridView, mais le résultat est étrange, il manque toujours une ligne ou une autre. Le problème est lorsque je clique sur le bouton btnSettled pour définir la date fixée, puis sur btnUpdate pour mettre à jour la base de données, le résultat semble correct, mais après avoir cliqué sur btnRefresh pour actualiser la DGV, il y a toujours une ligne manquante. Est-ce le problème sur UpdateCommand ou foreach loop? S'il vous plaît aidez-moi à résoudre ce problème. Je vous remercie.Mise à jour des lignes sélectionnées DataGridView
Après avoir cliqué sur btnSettled et btnUpdate
Après avoir cliqué sur btnRefresh
Mon code comme suit:
DataTable dtTrx = new DataTable();
SqlDataAdapter daTrx = new SqlDataAdapter();
DataSet dsTrx = new DataSet();
public Form1()
{
InitializeComponent();
getData();
}
private void getData()
{
string strConn = "Data Source=.\\xpw;Initial Catalog=MyStock;Integrated Security=True;";
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string sqlTrx = "SELECT TrxID, TrxDate,Ticker,Qty,Price,Type,AccID, SettledDate,BrokerUserID FROM Trx";
daTrx = new SqlDataAdapter(sqlTrx, conn);
SqlCommandBuilder cbTrx = new SqlCommandBuilder(daTrx);
daTrx.Fill(dsTrx, "trx");
conn.Close();
dtTrx = dsTrx.Tables["trx"];
dgvTrx.DataSource = dtTrx;
}
private void btnUpdate_Click(object sender, EventArgs e)
{
daTrx.Update(dsTrx, "trx");
}
private void btnRefresh_Click(object sender, EventArgs e)
{
dsTrx.Clear();
daTrx.Fill(dsTrx, "trx");
}
private void btnSettled_Click(object sender, EventArgs e)
{
foreach (DataGridViewCell c in dgvTrx.SelectedCells)
{
dgvTrx[7, c.RowIndex].Value = "2017/7/23";
}
}
Remarque: Si je modifie manuellement SettledDate sur DGV, puis cliquez sur Mettre à jour et actualiser, le résultat est correct. – xpw
Il serait préférable de boucler comme 'foreach (DataGridViewRow r dans dgvTrx.SelectedRows)' puis d'appliquer la valeur en utilisant 'r.Cells [" SettledDate "]. Value =" 2017/7/23 ";' –
Le getData () devrait être déclenché après la boucle foreach afin de mettre à jour le gridview afin de parler – Taco2