在datagridview中复制多行插入和更新 [英] Duplicate multiple row insert and update in datagridview
问题描述
我在 datagridview中插入并更新数据但它在<中插入了多个重复行 / span>表同时当我更新了一行它更新了所有行实际上我不理解其中 i完成错误即时提供我的插入代码和更新代码如果它 可能给我修改代码
插入我编写的代码:dataGridView1_RowLeave event 和更新的代码我写的:dataGridView1_CellValueChanged
我尝试过:
插入代码:
< pre lang =c#> private void dataGridView1_RowLeave( object sender,DataGridViewCellEventArgs e)
{
string connectionString = null ;
connectionString = ConfigurationManager.ConnectionStrings [ AccessConnectionString]。ConnectionString;
con.ConnectionString = connectionString;
string cmd1 = 插入Ledger([AccountNumber],[Account],[Date],[Description],[Post_Ref],[Debit],[Credit],[Balance])值(?,?,?,?,?,?, ?,?)跨度>;
OleDbCommand cmd = new OleDbCommand(cmd1,con);
con.Open();
cmd.CommandType = CommandType.Text;
int accountNumber;
bool accountHasValue = int .TryParse(dataGridView1.Rows [e.RowIndex ] .Cells [ AccountNumber]。Value.ToString(), out accountNumber);
if (accountHasValue)
{
cmd.Parameters.AddWithValue( @ AccountNumber,accountNumber);
}
else
{
cmd.Parameters.AddWithValue( @ AccountNumber,DBNull.Value);
}
string accounts = dataGridView1.Rows [e.RowIndex] .Cells [ 帐户]。Value.ToString();
cmd.Parameters.AddWithValue( @ Account,accounts);
DateTime datetime;
bool dateTimeHasValue = DateTime.TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ 日期]。Value.ToString(), out datetime);
if (dateTimeHasValue)
{
cmd.Parameters.AddWithValue( @ Date,datetime);
}
else
{
cmd.Parameters.AddWithValue( @ Date,DBNull.Value);
}
string 描述= dataGridView1.Rows [e.RowIndex] .Cells [ Description]。Value.ToString();
cmd.Parameters.AddWithValue( @ Description,Description);
string Post_Ref = dataGridView1.Rows [e.RowIndex] .Cells [ Post_Ref]。Value.ToString();
cmd.Parameters.AddWithValue( @ Post_Ref,Post_Ref);
int 借记;
bool debitHasValue = Int32 .TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ 借方]。Value.ToString(), out 借记);
if (debitHasValue)
{
cmd.Parameters.AddWithValue( @ Debit,debit);
}
else
{
cmd.Parameters.AddWithValue( @ Debit,DBNull.Value);
}
int 积分;
bool CreditsHasValue = Int32 .TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ Credit]。Value.ToString(), out 学分);
if (CreditsHasValue)
{
cmd.Parameters.AddWithValue( @ Credit,Credits);
}
else
{
cmd.Parameters.AddWithValue( @ Credit,DBNull.Value);
}
int 余额;
bool BalancesHasValue = Int32 .TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ Balance]。Value.ToString(), out 余额);
if (BalancesHasValue)
{
cmd.Parameters.AddWithValue( @ Balance,余额);
}
else
{
cmd.Parameters.AddWithValue( @ Balance,DBNull.Value);
}
cmd.ExecuteNonQuery();
con.Close();
}
更新代码:
private void dataGridView1_CellValueChanged( object sender,DataGridViewCellEventArgs e)
{
string connectionString = 空跨度>;
connectionString = ConfigurationManager.ConnectionStrings [ AccessConnectionString]。ConnectionString;
con.ConnectionString = connectionString;
string cmd1 = update Ledger set [AccountNumber] = @ AccountNumber,[Account] = @ Account,[Date] = @ Date,[Description] = @ Description,[Post_Ref] = @ Post_Ref,[Debit] = @Debit,[Credit] = @ Credit,[Balance] = @ Balance其中AccountNumber = @ AccountNumber;
OleDbCommand cmd = new OleDbCommand(cmd1,con);
con.Open();
cmd.CommandType = CommandType.Text;
int accountNumber;
bool accountHasValue = int .TryParse(dataGridView1.Rows [e.RowIndex ] .Cells [ AccountNumber]。Value.ToString(), out accountNumber);
if (accountHasValue)
{
cmd.Parameters.AddWithValue( @ AccountNumber,accountNumber);
}
else
{
cmd.Parameters.AddWithValue( @ AccountNumber,DBNull.Value);
}
string accounts = dataGridView1.Rows [e.RowIndex] .Cells [ 帐户]。Value.ToString();
cmd.Parameters.AddWithValue( @ Account,accounts);
DateTime datetime;
bool dateTimeHasValue = DateTime.TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ 日期]。Value.ToString(), out datetime);
if (dateTimeHasValue)
{
cmd.Parameters.AddWithValue( @ Date,datetime);
}
else
{
cmd.Parameters.AddWithValue( @ Date,DBNull.Value);
}
string 描述= dataGridView1.Rows [e.RowIndex] .Cells [ Description]。Value.ToString();
cmd.Parameters.AddWithValue( @ Description,Description);
string Post_Ref = dataGridView1.Rows [e.RowIndex] .Cells [ Post_Ref]。Value.ToString();
cmd.Parameters.AddWithValue( @ Post_Ref,Post_Ref);
int 借记;
bool debitHasValue = Int32 .TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ 借方]。Value.ToString(), out 借记);
if (debitHasValue)
{
cmd.Parameters.AddWithValue( @ Debit,debit);
}
else
{
cmd.Parameters.AddWithValue( @ Debit,DBNull.Value);
}
int 积分;
bool CreditsHasValue = Int32 .TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ Credit]。Value.ToString(), out 学分);
if (CreditsHasValue)
{
cmd.Parameters.AddWithValue( @ Credit,Credits);
}
else
{
cmd.Parameters.AddWithValue( @ Credit,DBNull.Value);
}
int 余额;
bool BalancesHasValue = Int32 .TryParse(dataGridView1.Rows [e.RowIndex] .Cells [ Balance]。Value.ToString(), out 余额);
if (BalancesHasValue)
{
cmd.Parameters.AddWithValue( @ Balance,余额);
}
else
{
cmd.Parameters.AddWithValue( @ Balance,DBNull.Value);
}
cmd.ExecuteNonQuery();
con.Close();
} 也许你可以使用:
if (dataGridView1.IsCurrentRowDirty)
{
// < span class =code-comment>保存...
}
你的RowLeave方法中的
。
im insert and update data in datagridview but it inserted multiple duplicate rows in table at same time when i updated one row it updated all row actually im not understanding where i done mistake im providing you my insert code and update code if it is possible give me modify code
insert code i written : dataGridView1_RowLeave event and Updated Code i written : dataGridView1_CellValueChanged
What I have tried:
insert code:
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
string connectionString = null;
connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
con.ConnectionString = connectionString;
string cmd1 = "insert into Ledger([AccountNumber],[Account],[Date],[Description],[Post_Ref],[Debit],[Credit],[Balance])values(?,?,?,?,?,?,?,?)";
OleDbCommand cmd = new OleDbCommand(cmd1, con);
con.Open();
cmd.CommandType = CommandType.Text;
int accountNumber;
bool accountHasValue = int.TryParse(dataGridView1.Rows[e.RowIndex].Cells["AccountNumber"].Value.ToString(), out accountNumber);
if (accountHasValue)
{
cmd.Parameters.AddWithValue("@AccountNumber", accountNumber);
}
else
{
cmd.Parameters.AddWithValue("@AccountNumber", DBNull.Value);
}
string accounts = dataGridView1.Rows[e.RowIndex].Cells["Account"].Value.ToString();
cmd.Parameters.AddWithValue("@Account", accounts);
DateTime datetime;
bool dateTimeHasValue = DateTime.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Date"].Value.ToString(), out datetime);
if (dateTimeHasValue)
{
cmd.Parameters.AddWithValue("@Date", datetime);
}
else
{
cmd.Parameters.AddWithValue("@Date", DBNull.Value);
}
string Description = dataGridView1.Rows[e.RowIndex].Cells["Description"].Value.ToString();
cmd.Parameters.AddWithValue("@Description", Description);
string Post_Ref = dataGridView1.Rows[e.RowIndex].Cells["Post_Ref"].Value.ToString();
cmd.Parameters.AddWithValue("@Post_Ref", Post_Ref);
int debit;
bool debitHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Debit"].Value.ToString(), out debit);
if (debitHasValue)
{
cmd.Parameters.AddWithValue("@Debit", debit);
}
else
{
cmd.Parameters.AddWithValue("@Debit", DBNull.Value);
}
int Credits;
bool CreditsHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Credit"].Value.ToString(), out Credits);
if (CreditsHasValue)
{
cmd.Parameters.AddWithValue("@Credit", Credits);
}
else
{
cmd.Parameters.AddWithValue("@Credit", DBNull.Value);
}
int Balances;
bool BalancesHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Balance"].Value.ToString(), out Balances);
if (BalancesHasValue)
{
cmd.Parameters.AddWithValue("@Balance", Balances);
}
else
{
cmd.Parameters.AddWithValue("@Balance", DBNull.Value);
}
cmd.ExecuteNonQuery();
con.Close();
}
Update Code :
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
string connectionString = null;
connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
con.ConnectionString = connectionString;
string cmd1 = "update Ledger set [AccountNumber]=@AccountNumber,[Account]=@Account,[Date]=@Date,[Description]=@Description,[Post_Ref]=@Post_Ref,[Debit]=@Debit,[Credit]=@Credit,[Balance]=@Balance where AccountNumber=@AccountNumber";
OleDbCommand cmd = new OleDbCommand(cmd1, con);
con.Open();
cmd.CommandType = CommandType.Text;
int accountNumber;
bool accountHasValue = int.TryParse(dataGridView1.Rows[e.RowIndex].Cells["AccountNumber"].Value.ToString(), out accountNumber);
if (accountHasValue)
{
cmd.Parameters.AddWithValue("@AccountNumber", accountNumber);
}
else
{
cmd.Parameters.AddWithValue("@AccountNumber", DBNull.Value);
}
string accounts = dataGridView1.Rows[e.RowIndex].Cells["Account"].Value.ToString();
cmd.Parameters.AddWithValue("@Account", accounts);
DateTime datetime;
bool dateTimeHasValue = DateTime.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Date"].Value.ToString(), out datetime);
if (dateTimeHasValue)
{
cmd.Parameters.AddWithValue("@Date", datetime);
}
else
{
cmd.Parameters.AddWithValue("@Date", DBNull.Value);
}
string Description = dataGridView1.Rows[e.RowIndex].Cells["Description"].Value.ToString();
cmd.Parameters.AddWithValue("@Description", Description);
string Post_Ref = dataGridView1.Rows[e.RowIndex].Cells["Post_Ref"].Value.ToString();
cmd.Parameters.AddWithValue("@Post_Ref", Post_Ref);
int debit;
bool debitHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Debit"].Value.ToString(), out debit);
if (debitHasValue)
{
cmd.Parameters.AddWithValue("@Debit", debit);
}
else
{
cmd.Parameters.AddWithValue("@Debit", DBNull.Value);
}
int Credits;
bool CreditsHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Credit"].Value.ToString(), out Credits);
if (CreditsHasValue)
{
cmd.Parameters.AddWithValue("@Credit", Credits);
}
else
{
cmd.Parameters.AddWithValue("@Credit", DBNull.Value);
}
int Balances;
bool BalancesHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Balance"].Value.ToString(), out Balances);
if (BalancesHasValue)
{
cmd.Parameters.AddWithValue("@Balance", Balances);
}
else
{
cmd.Parameters.AddWithValue("@Balance", DBNull.Value);
}
cmd.ExecuteNonQuery();
con.Close();
}
Maybe you can use:
if (dataGridView1.IsCurrentRowDirty) { // Save ... }
in your RowLeave method.
这篇关于在datagridview中复制多行插入和更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!