我知道这个问题被问到但是我无法弄清楚为什么这个动作如此复杂。 所以我有一个Produc表
SELECT TOP 1000 [IDProdus]
,[Denumire]
,[UM]
,[Pret]
,[IDFurnizor]
,[IDCategorie]
,[IDTipProdus]
,[OperatorAdaugare]
,[DataAdaugare]
,[OperatorModificare]
,[DataModificare]
FROM [Proiect].[dbo].[Produse]
这是我的表格专栏。我通过Visual Studion的数据源GUI添加了一个DataSet和这个表的内容(没有我写的实际代码)。
现在我有一个程序会在此表中插入一个新行。
这是代码
private void dToolStripMenuItem_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("connection-string-here");
string Query = "spGE_getProduse_Edit"; //Stored Procedure name
int Integer;
conn.Open();
SqlCommand com = new SqlCommand(Query, conn ); //creating SqlCommand object
com.CommandType = CommandType.StoredProcedure; //here we declaring command type as stored Procedure
com.Parameters.AddWithValue("@IDProdus", 0);
com.Parameters.AddWithValue("@Denumire ", denumireTextBox.Text.ToString());
com.Parameters.AddWithValue("@UM ",uMTextBox.Text.ToString());
com.Parameters.AddWithValue("@Pret ", Double.Parse(pretTextBox.Text));
com.Parameters.AddWithValue("@IDFurnizor ",Int16.Parse(iDFurnizorTextBox.Text));
com.Parameters.AddWithValue("@IDCategorie ", Int16.Parse(iDCategorieCombobox.SelectedValue.ToString()));
com.Parameters.AddWithValue("@IDTipProdus ", Int16.Parse(iDTipProdusCombobox.SelectedValue.ToString()));
com.Parameters.Add("@IDProdusScris", SqlDbType.BigInt);
com.Parameters["@IDProdusScris"].Direction = ParameterDirection.Output;
com.ExecuteNonQuery();
conn.Close();
Integer = Int32.Parse(com.Parameters["@IDProdusScris"].Value.ToString());
}
现在插入后我想用新的recored更新myGrid。我试过了
dataGridView1.Refresh();
dataGridView1.Update();
没有结果......有没有办法更新网格?对于VS来说,它看起来像一个简单的任务,但我找不到一个简单的解决方案。
我只看到并在msdn上阅读看起来像一些非常复杂的操作只是为了简单的刷新。 (这是关于获取行的状态并在状态被添加时插入行)。
所以有任何简单的方法可以做到这一点,或者我必须编写一个方法,每次我想要刷新我的dataGridView(我的意思是重新查询我的表并重建数据源)
答案 0 :(得分:1)
试试这样:
dataGridView1.Refresh();
和dataGridView1.Update();
无法从db获取更新记录。
您可以使用预先编译的存储过程
Create Procedure Sp_getProducts
as
BEGIN
SELECT TOP 1000 [IDProdus]
,[Denumire]
,[UM]
,[Pret]
,[IDFurnizor]
,[IDCategorie]
,[IDTipProdus]
,[OperatorAdaugare]
,[DataAdaugare]
,[OperatorModificare]
,[DataModificare]
FROM [Proiect].[dbo].[Produse]
END
使用此代码使用Using语句
using (SqlConnection conn = new SqlConnection("connection-string-here"))
{
conn.Open();
using(SqlCommand cmd=new SqlCommand("Sp_getProducts",conn))
{
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable ds = new DataTable();
da.Fill(ds);
gridView.DataSource = ds;
gridView.DataBind();
conn.Close();
}
}
答案 1 :(得分:0)
尝试重置数据源:
dataGridView1.DataSourcce = null;
dataGridView1.DataSource = [YOUR DATASET];
dataGridView1.Refresh();
dataGridView1.Update();