public virtual void Save()
        {
            DataSet dsChanges = (DataSet)ds.GetChanges();
            if (dsChanges == null)
            {
                MessageBox.Show("数据没有任何修改", "保存提示");
                return;
            }
        }        private void button1_Click(object sender, EventArgs e)
        {
            DataSet dsChanges = (DataSet)ds.GetChanges();
            if (dsChanges == null)
            {
                MessageBox.Show("数据没有任何修改", "保存提示");
                return;
            }
        }同样的修改一条数据  我在按钮里的代码就可以得到dataset的变化,从而保存       可是我写在函数里在别处调用就不行,得到的dsChanges 是null!  代码一样的啊我试着在函数里调用按钮的点击事件  也不行!

解决方案 »

  1.   

    建议你在button1_Click中调用Save()看看是不是还这样啊因为有可能在你调用Save()以前已经导致ds做了改变了。
      

  2.   

    public virtual void Save() 
            { 
                DataSet dsChanges = (DataSet)ds.GetChanges(); 
                if (dsChanges == null) 
                { 
                    MessageBox.Show("数据没有任何修改", "保存提示"); 
                    return; 
                } 
            } 
    你这个是虚方法啊!
      

  3.   

    ds.GetChanges();之前是否已经ds.AcceptChanges();
      

  4.   

    public void save(dataset ds)
    {
      DataSet dsChanges = ds.GetChanges(); 
      if (dsChanges == null) 
      }
      MessageBox.Show("数据没有任何修改", "保存提示"); 
      } 
    }
    试试这个
      

  5.   

    不是虚函数也不行啊! 并且我在之前没有AcceptChanges
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;using ControlDataBase;
    using Treecheck;
    using Treebind;
    using MyDgvsave;
    using System.Collections;
    using MyDgvdel;namespace atuomenu.Win
    {
        
        public partial class FrmbaseFormmodu : Form
        {        public DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            public FrmbaseFormmodu()
            {
                InitializeComponent();
            }        private void FrmbaseFormmodu_Load(object sender, EventArgs e)
            {
                Init();            dataGridView1.AllowUserToAddRows = false;
                dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(160, 206, 255);
                GridCss.Grid_RGb(dataGridView1);
                
            }        //初始化datagridview
            private void Init()
            {
                string str="select fqueryid,fmoduleid,fnote,fcol,fcolname,fcolwidth,ftablename,fkeycol,"+
                            "freturn,forder,fcond,fkeyname,fvisible from t_sys_query "+ 
                            "where fpagesize is null order by fmoduleid,fqueryid ";
               
                ds = DataBase.Query(str, "gridview");
                dt=ds.Tables["gridview"];            dataGridView1.DataSource = dt;            dataGridView1.Columns[0].HeaderText = "查询代码";
                dataGridView1.Columns[1].HeaderText = "菜单代码";
                dataGridView1.Columns[2].HeaderText = "窗体名称";
                dataGridView1.Columns[3].HeaderText = "包含列";
                dataGridView1.Columns[4].HeaderText = "包含列名";
                dataGridView1.Columns[5].HeaderText = "列宽";
                dataGridView1.Columns[6].HeaderText = "表名";
                dataGridView1.Columns[7].HeaderText = "查询条件对应值";
                dataGridView1.Columns[8].HeaderText = "返回列";
                dataGridView1.Columns[9].HeaderText = "排序列";
                dataGridView1.Columns[10].HeaderText = "筛选条件";
                dataGridView1.Columns[11].HeaderText = "查询条件对应内容";
                dataGridView1.Columns[12].HeaderText = "是否可用";
               
            }        public virtual void ADD()
            {
                //add
                DataSet dsChanges = (DataSet)ds.GetChanges();
                if (dsChanges == null)
                {
                    if (dataGridView1.DataSource != null)
                    {
                        BindingSource bd = new BindingSource(ds, "gridview");                    this.dataGridView1.DataSource = bd;
                        DataRow dr = this.dt.NewRow();
                        this.dt.Rows.Add(dr);                    dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];
                    }
                }
                else
                {
                    MessageBox.Show("请保存当前记录后再新增行!");
                }
            }
            private void BindGridData()
            {
                string strsql = "select fqueryid,fmoduleid,fnote,fcol,fcolname,fcolwidth,ftablename,fkeycol," +
                            "freturn,forder,fcond,fkeyname,fvisible from t_sys_query " +
                            "where fpagesize is null order by fmoduleid,fqueryid ";
                ds = DataBase.Query(strsql, "gridview");            dt = ds.Tables["gridview"];
                this.dataGridView1.DataSource = dt;
            }
            public void Save()
            {
                //save
                int aa = dataGridView1.Rows.Count;            string strsql = "select fqueryid,fmoduleid,fnote,fcol,fcolname,fcolwidth,ftablename,fkeycol," +
                            "freturn,forder,fcond,fkeyname,fvisible from t_sys_query ";
                Dgvsave.datagridviewsave(ds, strsql);
                BindGridData();
                this.dataGridView1.AllowUserToAddRows = false;        }        private void button1_Click(object sender, EventArgs e)
            {
                DataSet dsChanges = (DataSet)ds.GetChanges();
                if (dsChanges == null)
                {
                    MessageBox.Show("数据没有任何修改", "保存提示");
                    return;
                }
                //save
                int aa = dataGridView1.Rows.Count;            string strsql = "select fqueryid,fmoduleid,fnote,fcol,fcolname,fcolwidth,ftablename,fkeycol," +
                            "freturn,forder,fcond,fkeyname,fvisible from t_sys_query ";
                Dgvsave.datagridviewsave(ds, strsql);
                BindGridData();
                this.dataGridView1.AllowUserToAddRows = false;
            }
            public virtual void Delete()
            {
                //del
                string strsql = "select fqueryid,fmoduleid,fnote,fcol,fcolname,fcolwidth,ftablename,fkeycol," +
                            "freturn,forder,fcond,fkeyname,fvisible from t_sys_query ";
                Dgvdel.datagridviewdel(this.dataGridView1);
                Dgvsave.datagridviewsave(ds, strsql);
            }    }
    }
      

  7.   

     button1_Click  可以保存     Save() 不行
      

  8.   

    在这个窗口里再加个按钮来调save  就可以    但在mid框架的按钮来调这个窗体的save就不行