INSERT 到 SQL 后刷新 DataGridView
Refresh DataGridView after INSERT into SQL
我得到了我的表格 "InsertClient" 我有按钮点击方法
public void Insert_Button_Click(object sender, EventArgs e)
{
MyClass.InsertNewClient(fullNametxt.Text, shortNametxt.Text);
fullNametxt.Clear();
shortNametxt.Clear();
fullNametxt.Focus();
GridView.Update();
GridView.Refresh();
}
我的 class 收到这个:
public static void InsertNewClient (String fullName, String shortName)
{
SqlConnection conn = DBClass.ConnectionString.GetConnection();
SqlCommand cmd = new SqlCommand("MyStoredProcedure", conn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@fullName", fullName);
cmd.Parameters.AddWithValue("@shortName", shortName);
int i = cmd.ExecuteNonQuery();
if (i == 0)
{
MessageBox.Show("Can't save data");
}
if (i > 0)
{
MessageBox.Show("Data saved!");
}
}
事实是,数据已保存,但 DataGridView 在每次插入(单击按钮)后不会刷新。我必须关闭表单并重新打开它,然后才显得神清气爽。
请帮忙,我想在插入数据后刷新 DataGridView
你应该有单独的方法,例如 Refresh(),在你的情况下,它会使用 sqlDataReader 从 sql 获取数据,然后在你的 insertBtn 调用该方法并将 dataGridView 数据源初始化为它
有点像@mmking,但不完全是
我已经解决了..问题正是@Fabio所说的...
在按钮单击方法中,我再次用 DataSet 填充了 DataGridView。
public void Insert_Button_Click(object sender, EventArgs e)
{
MyClass.InsertNewClient(fullNametxt.Text, shortNametxt.Text);
this.tblClientTableAdapter.Fill(this.DataSetClient.tblClient);
}
为了弄清楚...我使用工具箱的 DataGridView,select "Choose data source" 和 select 我想用来填充 DataGrid 的 table。 ..
我使用默认给我的DataSetName,按照我在代码中显示的那样正确设置
希望对以后的问题有所帮助
cCUSTOMERBindingSource
我的BindingSource对象是用ToolBox生成的
public void ReloadGrid()
{
Cursor.Current = Cursors.WaitCursor;
cCUSTOMERBindingSource.DataSource = bd.C_CUSTOMER.ToList();
Cursor.Current = Cursors.Default;
}
这是我调用方法的地方
private void bunifuThinButton21_Click(object sender, EventArgs e)
{
C_CUSTOMER cst = new C_CUSTOMER();
C_ACCOUNT acc = new C_ACCOUNT();
cst.FIRST_NAME = txtFname.Text;
cst.MIDDLE_NAME = txtMname.Text;
cst.LAST_NAME = txtLname.Text;
cst.LOCATION = txtlocation.Text;
cst.DATE_OF_BIRTH = Convert.ToDateTime(dateTimePicker1.Text);
acc.ACCOUNT_BALANCE = Convert.ToInt32(txtInitAmoun.Text);
acc.ACCOUNT_NUMBER = Convert.ToInt32(txtAccNumber.Text);
cst.TELEPHONE = Convert.ToInt32(txtTelephone.Text);
cst.DATE_CREATE = DateTime.Now;
int newID = cstDao.insertCustomer(cst.FIRST_NAME, cst.MIDDLE_NAME, cst.LAST_NAME, cst.LOCATION, cst.DATE_OF_BIRTH, cst.TELEPHONE, cst.MODIFY_BY, cst.DATE_MODIFY, cst.DATE_CREATE);
acc.CUSTOMER_ID = newID;
acc.DATE_CREATED = DateTime.Now;
acc.CREATED_BY = 1;
int newAccID = cstDao.insertAccount(acc);
if(newID != 0 && newAccID != 0) {
MessageBox.Show("Insert Succefull", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Error during the insertion", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
ReloadGrid();
}
加载表单时
private void Form3_Load(object sender, EventArgs e)
{
bd = new Customer_DBEntities();
cCUSTOMERBindingSource.DataSource = bd.C_CUSTOMER.ToList();
}
我得到了我的表格 "InsertClient" 我有按钮点击方法
public void Insert_Button_Click(object sender, EventArgs e)
{
MyClass.InsertNewClient(fullNametxt.Text, shortNametxt.Text);
fullNametxt.Clear();
shortNametxt.Clear();
fullNametxt.Focus();
GridView.Update();
GridView.Refresh();
}
我的 class 收到这个:
public static void InsertNewClient (String fullName, String shortName)
{
SqlConnection conn = DBClass.ConnectionString.GetConnection();
SqlCommand cmd = new SqlCommand("MyStoredProcedure", conn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@fullName", fullName);
cmd.Parameters.AddWithValue("@shortName", shortName);
int i = cmd.ExecuteNonQuery();
if (i == 0)
{
MessageBox.Show("Can't save data");
}
if (i > 0)
{
MessageBox.Show("Data saved!");
}
}
事实是,数据已保存,但 DataGridView 在每次插入(单击按钮)后不会刷新。我必须关闭表单并重新打开它,然后才显得神清气爽。
请帮忙,我想在插入数据后刷新 DataGridView
你应该有单独的方法,例如 Refresh(),在你的情况下,它会使用 sqlDataReader 从 sql 获取数据,然后在你的 insertBtn 调用该方法并将 dataGridView 数据源初始化为它
有点像@mmking,但不完全是 我已经解决了..问题正是@Fabio所说的...
在按钮单击方法中,我再次用 DataSet 填充了 DataGridView。
public void Insert_Button_Click(object sender, EventArgs e)
{
MyClass.InsertNewClient(fullNametxt.Text, shortNametxt.Text);
this.tblClientTableAdapter.Fill(this.DataSetClient.tblClient);
}
为了弄清楚...我使用工具箱的 DataGridView,select "Choose data source" 和 select 我想用来填充 DataGrid 的 table。 ..
我使用默认给我的DataSetName,按照我在代码中显示的那样正确设置
希望对以后的问题有所帮助
cCUSTOMERBindingSource
我的BindingSource对象是用ToolBox生成的
public void ReloadGrid()
{
Cursor.Current = Cursors.WaitCursor;
cCUSTOMERBindingSource.DataSource = bd.C_CUSTOMER.ToList();
Cursor.Current = Cursors.Default;
}
这是我调用方法的地方
private void bunifuThinButton21_Click(object sender, EventArgs e)
{
C_CUSTOMER cst = new C_CUSTOMER();
C_ACCOUNT acc = new C_ACCOUNT();
cst.FIRST_NAME = txtFname.Text;
cst.MIDDLE_NAME = txtMname.Text;
cst.LAST_NAME = txtLname.Text;
cst.LOCATION = txtlocation.Text;
cst.DATE_OF_BIRTH = Convert.ToDateTime(dateTimePicker1.Text);
acc.ACCOUNT_BALANCE = Convert.ToInt32(txtInitAmoun.Text);
acc.ACCOUNT_NUMBER = Convert.ToInt32(txtAccNumber.Text);
cst.TELEPHONE = Convert.ToInt32(txtTelephone.Text);
cst.DATE_CREATE = DateTime.Now;
int newID = cstDao.insertCustomer(cst.FIRST_NAME, cst.MIDDLE_NAME, cst.LAST_NAME, cst.LOCATION, cst.DATE_OF_BIRTH, cst.TELEPHONE, cst.MODIFY_BY, cst.DATE_MODIFY, cst.DATE_CREATE);
acc.CUSTOMER_ID = newID;
acc.DATE_CREATED = DateTime.Now;
acc.CREATED_BY = 1;
int newAccID = cstDao.insertAccount(acc);
if(newID != 0 && newAccID != 0) {
MessageBox.Show("Insert Succefull", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Error during the insertion", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
ReloadGrid();
}
加载表单时
private void Form3_Load(object sender, EventArgs e)
{
bd = new Customer_DBEntities();
cCUSTOMERBindingSource.DataSource = bd.C_CUSTOMER.ToList();
}