我试图更新DataGridView中的选定行,但结果很奇怪,它总是缺少一行或另一行。问题是,当我点击btnSettled按钮设置结算日期,然后点击btnUpdate更新数据库,结果似乎没问题,但点击btnRefresh刷新DGV后,总会有一个缺失的行。这是UpdateCommand或foreach循环的问题吗?请帮我解决这个问题。谢谢。更新DataGridView选中的行
后单击btnSettled和btnUpdate 单击btnRefresh
依次如下:
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";
}
}
注意:如果我在DGV上手动编辑SettledDate,然后单击更新并刷新,结果是确定的。 – xpw
这将是更好的循环像'foreach(DataGridViewRow在dgvTrx.SelectedRows)'然后应用该值通过使用'r.Cells [“SettledDate”]。Value =“2017/7/23”;' –
getData )应该在foreach循环之后触发,以便更新gridview以便发言 – Taco2