当前位置:编程学习 > C#/ASP.NET >>

datagrid中修改 添加数据

我用vs2003+sqlserver, c/s窗体下,想实现直接在表格中添加 修改 删除,添加和修改不另外打开新的窗体,该如何实现啊?谢谢大家了  --------------------编程问答-------------------- 复杂的用ajax,简单的用控件 --------------------编程问答-------------------- 除了Data grid  还用什么控件 啊? --------------------编程问答-------------------- 在VS.NET中采用的是数据绑定的机制,这个Delphi中DBGrid不一样.不过,他好像也支持,添加一行,按F2保存.你也可以,取出DataGrid里的值,插入到数据库中.修改就不知道怎么实现了. --------------------编程问答-------------------- 比起gridview用这个比较繁琐<asp:repeater>直接把你的数据和表格等等用stringbuilder揉在一起显示出来,每一列后面加几个button,在button里面修改操作,然后重新返回repeater的stringbuilder~~ --------------------编程问答-------------------- 直接调用SqlAdapter的Update方法不就行了,用SqlCommandBuild对象自动生成增删改的语句,C/S模式点个按钮就完事儿了干嘛还得出新窗体?不明白! --------------------编程问答-------------------- 我的意思就是不想出现新的添加和修改窗体啊  5楼的能具体些吗?谢了 --------------------编程问答-------------------- 这里我只能给你我做过的练习的一些片断,程序大概是界面上有个DataGrid,nowDataSet是与这个DataGrid绑定的数据库源。下面三个按钮,更新、删除、撤消。更新时可以同时处理增和改的操作,删除是单独操作,其实也可以一起。(简化掉了异常处理、一些提示信息及与楼主提问不相关的操作)
//应用修改按钮与删除纪录按钮的点击事件
private void ButtonOperate_Click(object sender, EventArgs e)
{
  Button curButton = (Button)sender;
  //根据表格标题确定操作对象类型
  string table = dgTables.CaptionText == "学生信息" ? "Student" : "Score";
  //更新数据库
  if (curButton.Name == "btnAffirm")
  {
    //如果点击按钮为应用修改按钮的操作
    dbOperate.UpdateDB(nowDataSet, table);
  }
  else if (curButton.Name == "btnDelete")
  {
    //弹出删除操作会影响记录的提示信息
    if (ShowMsg(warning, 2) == DialogResult.Yes)
    {
        dbOperate.UpdateDB(nowDataSet, table, dgTables.CurrentRowIndex);
    }
  }
}
dbOperate对象的UpdateDB的方法
/// <summary>
///  执行修改数据库操作
/// </summary>
/// <param name="ds">要操作的DataSet对象</param>
/// <param name="table">要操作的表名同是作为用反射生成对象的类型</param>
public void UpdateDB(DataSet ds, string table)
{
  //根据表名创建对象
  IDataBase dbo = (IDataBase)Activator.CreateInstance(Type.GetType("Common." + table), this);
  if (ds.HasChanges())
  {
    dbo.Update(ds, table);
  }
}
下面是实现了IDataBase接口的一个类的Update方法,本来是再次调用dbOperater对象的一些与数据库打交道的方法,但我这里作了些修改简化
public int Update(DataSet ds, string tableName)
{
  //将表中所有变化提交到数据库
  m_sqlCommand.CommandType = System.Data.CommandType.Text;
  m_sqlCommand.CommandText = "select * from Student";
  m_sqlDataAdapter = new SqlDataAdapter(m_sqlCommand);
  SqlCommandBuilder autoCmd = new SqlCommandBuilder(m_sqlDataAdapter);
  int i = m_sqlDataAdapter.Update(ds.Tables[tableName].GetChanges());
  //确保更新DataSet的表中的行状态
  ds.AcceptChanges();
  return i;
} --------------------编程问答-------------------- 谢谢了 我看看啊  --------------------编程问答-------------------- 可以声明一个DataTable dt;
在dt中绑定数据,然后和DataGridView进行绑定;
然后你就可以对DataGridView里的数据进行修改,和删除
要想添加新行,你需要对dt添加一行空行,然后再和DataGridView进行绑定,对新行进行添加数据;
在保存时需要用到:
public bool OleDbUpdate(string sql,DataTable dt)
        {
//sql指你在查询出数据时用到的语句
            //更新数据库
            OleDbConnection myolecon = g.getcon();
            OleDbDataAdapter da = new OleDbDataAdapter(sql, myolecon);
            OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
            bool updateb = false;
            try
            {
                myolecon.Open();
                da.Update(dt);
                updateb = true;
            }
            catch (OleDbException e)
            {
                throw e;
            }
            finally {
                cb.Dispose();
                da.Dispose();
                myolecon.Close();
            }
            return updateb;
        }
试试,不过这种方法只能对单表进行操作.多表是不行的,这个是操作access的代码,操作Sql Server
和其他数据库只需改下代码就可以了. --------------------编程问答-------------------- 谢谢大家 C/S下 可以用DataTable   ? --------------------编程问答-------------------- DataSet,DataTable,DataView随便你绑!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,