form2调用form1自定义函数的问题

fjtxwd 2009-08-17 04:15:18
form1有个datagridview,一个button,点击弹出form2,然后把form2中textbox中数据插入到数据表,关闭form2,更新form1的datagridview。
下面的代码datagridview不会更新,要怎么改?

//form1
private void Form1_Load(object sender, EventArgs e)
{
loadfromtfctable();
}

public void loadfromtfctable()
{
dataGridView1.DataSource =0;
string connstr = "Data Source=MICROSOF-602800\\SQLEXPRESS;Initial Catalog=tfc;Integrated Security=True";
string commstr = "select * from tfctable";
SqlConnection conn = new SqlConnection(connstr);
SqlCommand comm = new SqlCommand(commstr, conn);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();
}

//按钮事件
private void addANodeToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();
}



//form2
Form1 form1 = new Form1();

//按钮添加数据
private void button1_Click(object sender, EventArgs e)
{
string connstr = "Data Source=MICROSOF-602800\\SQLEXPRESS;Initial Catalog=tfc;Integrated Security=True";
string commstr = "insert into tfctable(node,parent) values('"+textBox1.Text+"','--')";
SqlConnection conn = new SqlConnection(connstr);
SqlCommand comm = new SqlCommand(commstr, conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
form1.loadfromtfctable(); //好像是这里没什么用
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
szzzp110 2009-08-17
  • 打赏
  • 举报
回复
2楼说的对 用类可以实现的
先定于个公共类 BaseClass(好处不多说)

#region 建立数据库连接
/// <summary>
/// 建立数据库连接.
/// </summary>
/// <returns>返回SqlConnection对象</returns>
public SqlConnection getcon()
{
string M_str_sqlcon = "Data Source=(local);Database=db_SMS;User id=sha;PWD=8441213";
SqlConnection myCon = new SqlConnection(M_str_sqlcon);
return myCon;
}
#endregion

#region 执行SqlCommand命令
/// <summary>
/// 执行SqlCommand
/// </summary>
/// <param name="M_str_sqlstr">SQL语句</param>
public void getcom(string M_str_sqlstr)
{
SqlConnection sqlcon = this.getcon();
sqlcon.Open();
SqlCommand sqlcom = new SqlCommand(M_str_sqlstr, sqlcon);
sqlcom.ExecuteNonQuery();
sqlcom.Dispose();
sqlcon.Close();
sqlcon.Dispose();
}
#endregion

#region 创建DataSet对象
/// <summary>
/// 创建一个DataSet对象
/// </summary>
/// <param name="M_str_sqlstr">SQL语句</param>
/// <param name="M_str_table">表名</param>
/// <returns>返回DataSet对象</returns>
public DataSet getds(string M_str_sqlstr, string M_str_table)
{
SqlConnection sqlcon = this.getcon();
SqlDataAdapter sqlda = new SqlDataAdapter(M_str_sqlstr, sqlcon);
DataSet myds = new DataSet();
sqlda.Fill(myds, M_str_table);
return myds;
}
#endregion

Form1窗体中先定义
BaseClass.DataCon datacon = new BaseClass.DataCon();
Form1_Load()事件中
DataSet myds = datacon.getds("select * from tfctable","tfctable");
dataGridView1.DataSource = mysd.table["tfctable"];
//按钮事件
private void addANodeToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();
this.close();
}





Form2窗体中先定义
BaseClass.DataCon datacon = new BaseClass.DataCon();
//按钮添加数据
private void button1_Click(object sender, EventArgs e)
{
datacom.getcom("insert into tfctable(node,parent) values('"+textBox1.Text+"','')
Form1 f1=new Form1();
f1.show();
}
定义公共类对数据库的操作(插入,更新)方便多了,
syfsz 2009-08-17
  • 打赏
  • 举报
回复
private void addANodeToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
if (form2.ShowDialog()==DialogResult.Ok)
{
Try
{
string connstr = "Data Source=MICROSOF-602800\\SQLEXPRESS;Initial Catalog=tfc;Integrated Security=True";
string commstr = "insert into tfctable(node,parent) values('"+form2.ReturnValue+"','--')";
SqlConnection conn = new SqlConnection(connstr);
SqlCommand comm = new SqlCommand(commstr, conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
this.loadfromtfctable();
}
catch
{
MessageBox.Show("更新失败");
}
}
}


// form2

public string ReturnValue
{
get{return textBox1.Text;}
}
bugers 2009-08-17
  • 打赏
  • 举报
回复
LZ的思路是VB 的写法,C# 要复杂 一些 ,据MSDN说这样是为了安全
syfsz 2009-08-17
  • 打赏
  • 举报
回复
//按钮事件
private void addANodeToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
Form2.form1 = this;
form2.ShowDialog();
}



//form2
public Form1 form1 =null;

//按钮添加数据
pmallen 2009-08-17
  • 打赏
  • 举报
回复
form1.loadfromtfctable()这个form1对象已经不原来的Form1_Load上的那个from1对象了
你可以在新建Form2 form2 = new Form2()时,把this对象传给它,这是一种,我没试过;
第二种方法:你可以事件来实现的.
szzzp110 2009-08-17
  • 打赏
  • 举报
回复
插入后看数据库中数据表有无更新?
代码貌似没问题,我去试验下

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧