例如:  有Form1(button1) 和 Form2(dataGrid1)button1 的事件是查询数据库生成 DataTable dt,如下:
//   string sql="select * from user";
//   AccessDB acc=new AccessDB();
//   DataTable dt=acc.GetDataTable(sql);
 
Form2 的dataGrid1 以dt为数据源,(dataGrid1.DataSource=dt)在按下Form1 的按钮后,Form1 隐藏,Form2 的DataGrid1 显示查询结果。请问如何在button1的事件和Form2中添加代码?

解决方案 »

  1.   

    1.button1的事件
    Response.Redirect("Form2.aspx");
    2.Form2 load 事件
    //注:下面这段不要写在form1的button1下,写在form2的load中就可以了
    string sql="select * from user";
    AccessDB acc=new AccessDB();
    DataTable dt=acc.GetDataTable(sql);
    dataGrid1.DataSource=dt;
    dataGrid1.DataBind();
      

  2.   

    郁闷了,忘了说清楚了。sql字符串不是那么简单,而是在Form1中的listBox中选择Item后生成的。
    所以Form2不能生成查询语句,要在Form1中生成,在Form2中显示结果。真是头疼的事!
      

  3.   

    这个就是说一个form里面通过事件来控制另外一个form。这个问题曾经在这个论坛“风靡一时”,你直接搜索就可以得到解决方法。
    有一种办法的思路就是:把form2传递给form1,通过this关键字。
      

  4.   

    可以考虑使用delegate,
    或者使用在form2 中修改构造函数
     form2  fr= new form2(dataSet) ;
      

  5.   

    就将Form1中的数据传到Form2中,
    然后用DataView.Filter="条件";
    然后再绑定,显示。
      

  6.   

    1.button1的事件
    Response.Redirect("Form2.aspx");
    string sql="select * from user";
    Session["sql"]=sql;
    2.Form2 load 事件
    string sql=Session["sql"].ToString();
    AccessDB acc=new AccessDB();
    DataTable dt=acc.GetDataTable(sql);
    dataGrid1.DataSource=dt;
    dataGrid1.DataBind();
    Session["sql"]=null;
    可以解决此问题,只是用Session不是太好。
      

  7.   

    1.button1的事件
    string sql="select * from user";
    Session["sql"]=sql;
    Response.Redirect("Form2.aspx");
    2.Form2 load 事件
    string sql=Session["sql"].ToString();
    AccessDB acc=new AccessDB();
    DataTable dt=acc.GetDataTable(sql);
    dataGrid1.DataSource=dt;
    dataGrid1.DataBind();
    Session["sql"]=null;
    可以解决此问题,只是用Session不是太好。
      

  8.   

    头晕了,都是讨论asp的!
    我自己也忘记了,偶用的windows窗体,非web!
      

  9.   

    晕。你可以有一个public的class,里面有一个static的datatable。form1点击按钮的时候处理一下datatable,然后hide,然后show form2,由于form2使用这个static的datatable,所以她的datagrid会自动更新。另外要实现你要求的功能似乎很多方法啊。比如点击按钮的时候构建datatable,然后把这个datatable作为form2的某一个public方法的参数就可以了啊。
      

  10.   

    主要思路就是把定义控件的语句改成用public声明的,这样就能在form1中用form2 的控件了
      

  11.   

    给你个思路~
      重写form2的构造函数~
      在form1,button按下时,把dataset 传到form2中
      

  12.   

    各位大大写点代码阿,我不懂啊!先来个简单的:
    Form1的button1中有参数 string i ,
    要在Form2的button2中MessageBox.Show出来.怎么写呢?
      

  13.   

    可以这样
    Form1的代码里
    Form2 fm2=new Form2();
    fm2.Show(this);Form2的构造函数
    Form2(Form1 fm1)
    {this.parentform1=fm1;}然后是不是可以自由操做了??
      

  14.   

    in Form2
    ////
    MessageBox.Show(this.parentform1.stirng1);