【发布时间】:2016-01-27 07:29:54
【问题描述】:
这是我的代码:
public partial class Form1 : Form
{
SqlCommandBuilder cmbl;
string con = "Data Source=localhost;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=1234";
SqlDataAdapter sdaHFP;
string QueryDgvHFP = "SELECT * FROM HFP";
DataTable dtHFP;
SqlConnection cn;
public Form1()
{
InitializeComponent();
}
private void Form1(object sender, EventArgs e)
{
sdaHFP = new SqlDataAdapter(QueryDgvHFP, con);
dtHFP = new DataTable();
sdaHFP.Fill(dtHFP);
foreach (DataRow item in dtHFP.Rows)
{
int n = dgvHFP.Rows.Add();
dgvHFP.Rows[n].Cells[0].Value = item["HFP"].ToString();
dgvHFP.Rows[n].Cells[1].Value = item["YearPeriod"].ToString();
if (item["Active"].ToString() == "Y")
{
dgvHFP.Rows[n].Cells[2].Value = true;
}
else
{
dgvHFP.Rows[n].Cells[2].Value = false;
};
dgvHFP.Rows[n].Cells[3].Value = item["ID"].ToString();
}
}
这是将数据从 Sql Query 加载到 DataGridView,我在此代码中添加了一个用于执行更新或插入的按钮:
private void btUpdate_Click(object sender, EventArgs e)
{
try
{
cmbl = new SqlCommandBuilder(sdaHFP);
sdaHFP.Update(dtHFP);
MessageBox.Show("Success", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
当我在DataGridView 中更新/插入数据并单击该更新按钮时,会出现一个成功消息框,但数据库中的数据既未更新也未插入
请帮我解决这个问题,为什么更新按钮不起作用?
非常感谢。
【问题讨论】:
-
@M. Schena 感谢您编辑我的问题。
-
是什么让你认为你实际上是在使用Update()方法(用于更新UI中的控件)执行UPDATE sql语句?
-
您应该将
DataGridView绑定到您的DataTable,然后当您更改网格中的单元格值时,更改将应用于DataTable。然后你可以使用Update方法。 -
@RezaAghaei 你能解释一下如何将 DataGridView 绑定到 DataTable,我是 C# 中的菜鸟和绿色。谢谢。
-
@Mac 我为您发布了详细的答案。在答案中,我向您展示了如何将
DataGridView绑定到DataTable,更重要的是,如何使用DataGridViewCheckBoxColumn编辑您的字符串Y或N。答案已经过测试并且可以正常工作。
标签: c# .net winforms checkbox datagridview