我有 2 个表,即 Pending.dbo
和 Approved.dbo
。我用过tabcontrol。第一个选项卡包含 “Pending datagridview”
以及 checkbox
和 btnApprove
。名为“Approved”的第二个选项卡只是一个只读 datagridview。
我想要的是,当我点击btnApprove
时,“Pending datagridview”
中checkbox
选中的数据将传输到表格Approved.dbo
。
这可能吗?到目前为止,这是我的代码:
语言:c#
private void btnApproved_Click(object sender, EventArgs e)
{
//List<DataGridViewRow> selectedRows = (from row in dataGridView1.Rows.Cast<DataGridViewRow>() where Convert.ToBoolean(row.Cells["checkBoxColumn"].Value) == true select row).ToList();
foreach (DataGridView row in dataGridView1.Rows)
{
using (var connect = sqlcon.getConnection())
{
using (SqlCommand cmd = new SqlCommand("COMMAND TO TRANSFER DATA??????"))
{
}
}
}
}
PS。抱歉我的英语和解释不好。谢谢!
最佳答案
应该这样做:-
using (SqlConnection conn = new SqlConnection(ConnString))
{
using (SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
conn.Open();
for(int i = 0; i < dataGridView1.Rows.Count; i++)
{
StrQuery = @"INSERT INTO tableName VALUES ("
+ pendingdataGridView.Rows[i].Cells["ColumnName"].Value +", "
+ pendingdataGridView.Rows[i].Cells["ColumnName"].Value +");";
comm.CommandText = StrQuery;
comm.ExecuteNonQuery();
}
}
}
如果您只想将选定的行传输到数据库,则将 for 循环部分替换为
for(int i = 0; i < pendingdataGridView.Rows.Count; i++)
{
if(!pendingdataGridView.Rows.Selected[i])
Continue;
StrQuery= @"INSERT INTO tableName VALUES ("
+ pendingdataGridView.Rows[i].Cells["ColumnName"].Value +", "
+ pendingdataGridView.Rows[i].Cells["ColumnName"].Value +");";
comm.CommandText = StrQuery;
comm.ExecuteNonQuery();
}
然后将值从数据库绑定(bind)到Approvedgridview
SqlDataAdapter dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
// Populate a new data table and bind it to the BindingSource.
DataTable table = new DataTable();
dataAdapter.Fill(table);
Approvedgridview.DataSource = table;
selectCommand
:从数据库检索值的查询connectionString
:您的数据库连接字符串
关于c# - 单击按钮后如何在数据网格中选中复选框的情况下传输数据? C# 和 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32263300/