日期:2014-05-18  浏览次数:21202 次

c#窗体间传递数据库值 DataTable
1.我在第一个窗体1已经连接数据库并在该窗体dataGridView1中显示;
  mydt = new DataTable();
  dataGridView1.DataSource = mydt.DefaultView;
2.新建一个窗体2,也添加了一个dataGridView1,要显示窗体1中的数据;我不想在窗体2重新连接数据库,不知道如何将窗体1中的传过来。{我设置mydt为公共变量,但还需要重新连接数据库,才可以显示数据。}

------解决方案--------------------
Form1中设置为全局变量
public DataTable mydt = new DataTable();


在Form2中

Form1 form1=new Form1();
form1.ShowDialog();
dataGridView1.DataSource=form1.mydt;
------解决方案--------------------
public class Common
{
private static string connecString = "Data Source=.;Initial Catalog=Northwind;Integrated Security=True";

public static DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(connecString))
{
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
sda.Fill(ds);
}
return ds;
}
}

在你需要的地方调用:
string sql="select *from orders";
DataSet ds = Common.GetDataSet(sql);
dataGridView1.DataSource = ds.Tables[0];
------解决方案--------------------
1.设置静态全局变量mydt 

2.在Form2中加属性
------解决方案--------------------
在Form2中建一个带有DataTable的构造函数:
C# code

public Form2(DataTable dt)
{
   this.DataGridView1.DataSource=dt;
}

//在窗体Form1中调用Form2:
Form2 frm=new Form2(this.DataGridView1.DataSource as DataTable);
frm.Show();

------解决方案--------------------
public static DataTable mydt=null;
在第一个窗体中加并给它赋值
dataGridView1.DataSource = form1.mydt;