//Adding Data to Database Here.
cmd = new SqlCommand("INSERT INTO itemDB(brname, itmname, itmunit,itmgr, itmmrp, itmbyp, itmdlrp, itmtx, itmdlrmrg, itmrtmrg, itmusrcode, active) VALUES (@label11, @label4, @label6, @label14, @label2, @label9, @label10, @label8, @label12, @label13, @label7, @label3)", con);
cmd.Parameters.Add("@label11", combobrand.GetItemText(combobrand.SelectedItem));
cmd.Parameters.Add("@label4", itemname.Text);
cmd.Parameters.Add("@label6", combouom.GetItemText(combouom.SelectedItem));
cmd.Parameters.Add("@label14", itemkgs.Text);
cmd.Parameters.Add("@label2", itemmrp.Text);
cmd.Parameters.Add("@label9", itembrp.Text);
cmd.Parameters.Add("@label10", itemslp.Text);
cmd.Parameters.Add("@label8", itemtax.Text);
cmd.Parameters.Add("@label12", itemdlmargin.Text);
cmd.Parameters.Add("@label13", itemretailmargin.Text);
cmd.Parameters.Add("@label7", itemcode.Text);
cmd.Parameters.Add("@label3", status);
cmd.ExecuteNonQuery();
combobrand.SelectedIndex = -1;
combouom.SelectedIndex = -1;
itemname.Text = "";
itemunit.Text = "";
itemmrp.Text = "";
itembrp.Text = "";
itemslp.Text = "";
itemtax.Text = "";
itemdlmargin.Text = "";
itemretailmargin.Text = "";
itemcode.Text = "";
MessageBox.Show("Record Saved", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
此表单用于添加数据。按下关闭按钮后,我想刷新我的父表单数据网格。
将数据加载到form1
中的datagrid Public void dataload()
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM[dbo]. [itemDB]", con);
DataTable dt = new DataTable();
sda.Fill(dt);
foreach (DataRow item in dt.Rows)
{
int n = dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[0].Value = item["itmcode"].ToString();
dataGridView1.Rows[n].Cells[1].Value = item["brname"].ToString();
dataGridView1.Rows[n].Cells[2].Value = item["itmname"].ToString();
dataGridView1.Rows[n].Cells[3].Value = item["itmunit"].ToString();
dataGridView1.Rows[n].Cells[4].Value = item["itmgr"].ToString();
dataGridView1.Rows[n].Cells[5].Value = item["itmml"].ToString();
dataGridView1.Rows[n].Cells[6].Value = item["itmpc"].ToString();
dataGridView1.Rows[n].Cells[7].Value = item["itmtx"].ToString();
dataGridView1.Rows[n].Cells[8].Value = item["itmbyp"].ToString();
dataGridView1.Rows[n].Cells[9].Value = item["itmdlrmrg"].ToString();
dataGridView1.Rows[n].Cells[10].Value = item["itmrtmrg"].ToString();
dataGridView1.Rows[n].Cells[11].Value = item["itmdlrp"].ToString();
dataGridView1.Rows[n].Cells[12].Value = item["itmmrp"].ToString();
dataGridView1.Rows[n].Cells[13].Value = item["itmusrcode"].ToString();
dataGridView1.Rows[n].Cells[14].Value = item["active"].ToString();
}
con.Close();
}
在表单2中添加数据后,form1 datagrid没有刷新 刷新我在form1中添加了一个新按钮,然后单击该按钮i 我正在刷新datagrid的数据。 我创建的dataload函数用于将数据加载到datagrid。我在打电话 这个功能我需要的地方。
答案 0 :(得分:0)
首先,您需要将父窗体中的datagridView设置为public,并覆盖用于通过以下代码添加数据的窗体上的OnClosed事件:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
foreach (var item in Application.OpenForms)
{
DataSet dataSet = new DataSet();
using (SqlConnection connection= new SqlConnection(ConnectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter(new SqlCommand(SelectStatement,connection));
adapter.Fill(dataSet);
}
if (item.GetType()==typeof(parentForm))
{
(item as Form1).dataGridView1.DataSource = dataSet.Tables[0];
}
}
}
答案 1 :(得分:0)
由于您几乎没有提供任何代码,我将假设您拥有"父母表格" Form1
打开Form2
。
Form2
使用您提供的命令插入数据。
一种方法是将Form2
显示为对话框表单(表单位于另一个表单之上,您可以在其下方单击)。当该表单成功关闭(记录保存到数据库中)时,刷新父表单上的网格(Form1
)。
因此,在Form2
(子表单)上,插入数据后,设置表单DialogResult
,如下所示:
//... removed previous statements for brevity
MessageBox.Show("Record Saved", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
//record is inserted, now return DialogResult "OK", so that the parent form can refresh grid
//this also closes this child, insert form
this.DialogResult = DialogResult.OK;
在父表单上,打开子表单后,您应该检查子表单DialogResult
。如果结果正常,请刷新网格。
在您的父表单上,代码应该是这样的:
Form2 frmInsert = new Form2();
DialogResult dr = frmInsert.ShowDialog();
if (dr == DialogResult.OK)
{
dataGridView1.Rows.Clear();
dataload();
}
else
{
//nothing, user didn't insert anything on insert form
}
另一种方法是从子窗体中触发事件。这允许您以任何方式显示子表单(不一定是对话框表单),只是等待事件被触发,以便您可以刷新网格。
在子表单上添加名为EventHandler
的{{1}},就像这样(在表单的范围内)
RefreshNeeded
在您的子表单(public partial class Form2 : Form
{
//event handler
public EventHandler RefreshNeeded;
public Form2()
{
InitializeComponent();
}
//... rest of form's code...
)上,插入数据时触发事件(比如Form2
):
btnInsert_Click
在父表单上,您必须订阅事件,并添加在触发事件时执行的方法:
private void button1_Click(object sender, EventArgs e)
{
//... removed previous statements for brevity
MessageBox.Show("Record Saved", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
//after data is saved, fire event!
RefreshNeeded?.Invoke(this, new EventArgs());
}
那应该是它。如果您有任何疑问,请随时询问。