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#