修改DataSet后,将dataGrid重新绑定不可以吗?

解决方案 »

  1.   

    //新建小窗口的实例
    frmPop frm=new frmPop(...);
    frm.ShowDialog();
    this.someVar = frm.result;//小窗口中的属性result
      

  2.   

    我做论坛时,有过类似的操作看看这里的许多弹出窗口,都有返回值,或许可以参考http://www.xlfancy.com (自我广告)
      

  3.   

    1:你把DataGrid的数据源DataGrid.DataSource用一个属性公开如下(设为DataTable:
    public DataTable dgDataSource
    {
        get
        {
            return this.DataGrid.DataSource;
        }
        set
        {
            this.DataGrid.DataSource=value;
        }
    }
    2:在要弹出的窗体中加一个对第一个窗体的引用如下:
    private TypeOfTheFirstForm m_parentForm;
    public TypeOfTheFirstForm PForm
    {
        get
        {
            return this.m_parentForm;
        }
        set
        {
            this.m_parentForm=value;
        }
    }
    3:在第一个窗体要弹出第二个窗体的时候如下:
    PopuForm f=new PopuForm()
    f.PForm=this;
    f.ShowDialog();
    4:这样的话就可以在第二个窗体里访问并修改第一个窗体里的DataGrid了,改DataSource的同时DataGrid会自动更新的,这个你不用管就是了.
    你也可以在第二个窗体里加一个属性这个话你可以如下在第一个窗体:
    PopuForm f=new PopuForm()
    f.ShowDialog();
    this.DataGrid.DataSource.Rows[i][i]=f.SomeProperty等等,方法多多,不知道是你是你想要的,楼主都四个角了,这个不难吧.
      

  4.   

    winform 当DataGrid数据源发生改变后,DataGrid获得焦点时会自动刷新,webform不可以。。
      

  5.   

    在小窗口里面声明
    public Form1 xx;
    在弹出小窗口的时候这样写
    //新建小窗口的实例
    frmPop frm=new frmPop(...);
    frm.xx = this;     //住重要关键的依据,相当于把小窗口的xx对象指向主窗体,以后对xx的操作就等同于对主窗体的操作
    frm.ShowDialog();你可以这样在小窗口里面访问主窗口的控件
    xx.dataGrid1当然这儿涉及到的所有夸窗口访问的东西都要设置为Public属性
      

  6.   

    子form, 你可以定义两个参数在 子form的构造函数里,
       一个是System.windows.Form.DataGrid,一个是System.Data.DataSet,
      然后在你的主form里调用,传递 主form的dataGrid,和dataGrid绑定的dataSet
      调用:Form form = new Form( this, this.dataGrid, this.dataSet )
    然后在子form的Closing事件里改变dataSet的值,重新绑定dataGrid.
    这个只是个思路,应该可以实现,自己试试
      

  7.   

    呵呵,自己试了一下,可以实现;
    这里是主form的调用:
    Form3 form = new Form3( this.dataGrid1, this.dataSet );
    form.Show();这个是子form,你可以用其他事件触发来替代closing事件!
    /// <summary>
    /// Form3 的摘要说明。
    /// </summary>
    public class Form3 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.TextBox textBox1;
    public System.Windows.Forms.DataGrid dataGrid;
    public System.Data.DataSet dataSet;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form3( System.Windows.Forms.DataGrid dataGrid, System.Data.DataSet dataSet )
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); this.dataGrid = dataGrid;
    this.dataSet = dataSet; //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    }private void Form3_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
    foreach( DataRow dr in this.dataSet.Tables[0].Rows )
    {
    dr[1] = this.textBox1.Text;
    } this.dataGrid.DataSource = dataSet;
    this.dataGrid.Refresh();
    }
      

  8.   

    多谢多谢,呵呵,我试一下!顺便帮我也看看这个问题http://community.csdn.net/Expert/topic/3093/3093319.xml?temp=.2678339
      

  9.   

    http://www.csdn.net/Develop/read_article.asp?id=26433
    http://www.csdn.net/Develop/read_article.asp?id=26434
    http://www.csdn.net/Develop/read_article.asp?id=26436