有一个Item窗体类的实例frmItem,里面有一个dataGrid1,frmItem有一个附属窗体frmFilter,属于窗体类Filter,我想单击frmFilter里某个按钮,传递一个字符串(这个字符串是一个SQL语句),在frmItem里面更新dataGrid1里的内容,怎么构思比较好,还请各位有经验的讨论一下。

解决方案 »

  1.   

    因为DataGrid是绑定的数据集,当你的数据集合发生改变时,DataGrid里面肯定也是随着改变的。
    你可以试试重新绑定一下frmItem里面dataGrid1的数据集。
    eg:dataGrid1.SetDataBinding(ds,ds.Tables[0].TableName);
      

  2.   

    通过Session将那个SQL传递到显示DataGrid 的窗体(也可以通过URL参数,但是不怎么保险)。
    然后在Page  OnLoad事件中将SQL取出,做查询,绑定DataGrid  。
      

  3.   

    楼主兄弟,你的问题提的不够清楚!
    到底是传一个值到DataGrid里面,还是在用户点击“某个按钮后”执行一个SQL语句,然后再把结果传到DataGrid控件里面???如果是后者的话,我想这样实现比较好!先在.cs文件里面定义一个操作函数,然后在点击“特定按钮”时,调用这个函数,然后执行SQL语句,对数据库进行操作,再把结果显示到DataGrid控件里面!(要用到DataSet数据集)如果是前者,那太简单了!
    在.cs文件里面定义一个事件函数,然后在点击这个按钮时,调用这个函数,在函数里,把相应的值显示到DataGrid控件里!!!!!!希望楼主把面向对象的思想好好的理解一下,对你以后的学习,或者是技术的提高都有非常大的好处!
      

  4.   

    各位,我单击的按钮是附属窗体里的,我要更新的dataGrid1是另一个窗体
    它们不是同一个窗体。我曾想可否在dataGrid1所在窗体建一个textBox控件,不可见,然后在这个textBox控件的TextChanged事件里做更新dataGrid1的操作,这样就只需传递一个字符串到这个textBox控件就可以了。还有什么好方法吗?请教各位
      

  5.   

    最后,我重载了Filter的构造函数,当Item实例单击筛选按钮时传递一个sting和一个this引用。在Filter类里增加成员:
    XXX _frmXXXGetFromOwner;  //如果父窗体是XXX的实例,则保存父窗体的引用
    YYY _frmYYYGetFromOwner;  //如果父窗体是YYY的实例,则保存父窗体的引用在Filter的构造函数里:
    public Filter(string strSql,Form frmOwner)
    {
        InitializeComponent();
        strSQLFromOwner=strSql;
        switch(frmOwner.Name )
        {
    case("XXX"):
    _frmXXXGetFromOwner=frmOwner as XXX ;
    break;
    case("YYY"):
    _frmYYYGetFromOwner=frmOwner as YYY ;
    break;
        }
    }
    这样就解决了,希望对跟我有相同困惑的朋友有所帮助!