有没有Dataset中的Table的添加、删除事件?

abcdefgdeng 2008-06-16 10:05:41
我之前用过Delphi,数据控件,在添加记录、删除记录、保存记录时都会触发对应的事件,请问C#中的Dataset这有没这样的事件?如果没有可以用什么办法可以知道我往数据中添加了数据,我主要是想在添加数据和保存数据前作一些处理。
...全文
216 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
生财 2008-06-28
  • 打赏
  • 举报
回复
jf...............
marvelstack 2008-06-28
  • 打赏
  • 举报
回复
DataSet包含DataTabe,而DataTable提供了许多事件来满足数据修改需要。

DataTable.TableNewRow//插入新行时
DataTable.RowChanging//行改变前
DataTable.RowChanged//行改变后
DataTable.RowDeleting//行删除前
DataTable.RowDeleted//行删除后



Sant11 2008-06-26
  • 打赏
  • 举报
回复
在你的table创建下加入
ds.Tables[0].RowChanged +=连续两下tab键会自动创建
void Form1_TableNewRow(object sender, DataTableNewRowEventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}
Sant11 2008-06-26
  • 打赏
  • 举报
回复

ds.Tables[0].RowChanged += new DataRowChangeEventHandler(Form1_RowChanged);//行改变后
ds.Tables[0].RowChanging += new DataRowChangeEventHandler(Form1_RowChanging);//行改变前
ds.Tables[0].RowDeleted += new DataRowChangeEventHandler(Form1_RowDeleted);//行删除后
ds.Tables[0].RowDeleting += new DataRowChangeEventHandler(Form1_RowDeleting);//行删除前
ds.Tables[0].TableNewRow += new DataTableNewRowEventHandler(Form1_TableNewRow);//插入新行时
void Form1_TableNewRow(object sender, DataTableNewRowEventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}

void Form1_RowDeleting(object sender, DataRowChangeEventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}

void Form1_RowDeleted(object sender, DataRowChangeEventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}

void Form1_RowChanging(object sender, DataRowChangeEventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}

void Form1_RowChanged(object sender, DataRowChangeEventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}
goldxinx 2008-06-26
  • 打赏
  • 举报
回复
DataSet.Tables[0].RowChanging
DataSet.Tables[0].RowDeleting
abcdefgdeng 2008-06-26
  • 打赏
  • 举报
回复
C#论坛的高手呢?
abcdefgdeng 2008-06-24
  • 打赏
  • 举报
回复
我的列是绑定到dataview中的,用户可以自由的在网格中添加行,也就是AddNew();当转到新的一行时,提示,KeyNo不能为空了!如果我在AddNew()时触发事件,然后在事件中对KeyNo列附值,多好!
TeBieChi 2008-06-22
  • 打赏
  • 举报
回复
你在执行CMD的时候用一个变量保存他的值
然后通过这个值去判断有没有成功
如果成功了 你就去为你的列副值 不需要什么时间 if ...else 就能解决你的问题


4楼其实也可以 他是bool的函数 返回true和false 如果是true就副值 false 就客户自己写


总之,你可以先判断从表的主表是否存在 下面就好写了
abcdefgdeng 2008-06-22
  • 打赏
  • 举报
回复
怎么没人回答!各位大虾帮帮忙。
abcdefgdeng 2008-06-17
  • 打赏
  • 举报
回复
感谢楼上各位的回答,但都还没有回答到我的问题。
我想要的是当我往DataTable中添加一行记录的同时触发事件。假如我想做一个主从表的单据,我已经有主表的单号,
那么我的明细表中的单号就不需要用户录入了,只要用程序自动生成的行了,这时我希望当用户AddNew()时触发一个事件,
然后,我为DataTable的单号这一列附值。
lingxyd_0 2008-06-17
  • 打赏
  • 举报
回复
DataSet中有对表格的添加以及删除操作。如:

DataSet ds = new DataSet();
ds.Tables.Remove(DataTable table/string tablename);
ds.Tables.Add(DataTable table/string tablename);

你要是想在添加数据前做一些处理 直接在添加数据的代码前添加你所要的处理不就行了。
aminta_xx 2008-06-16
  • 打赏
  • 举报
回复
//read data
bool readDate(string uid)
{
connection2().Open();
string sql = "select * from t_user where u_id='" + uid + "'";
SqlDataAdapter readDa = new SqlDataAdapter(sql, connection2());
DataSet dsRead = new DataSet();
readDa.Fill(dsRead, "t_user");
Label_uid.Text = dsRead.Tables[0].Rows[0]["u_id"].ToString();
tb_name.Text = dsRead.Tables[0].Rows[0]["u_name"].ToString();
tb_memo.Text = dsRead.Tables[0].Rows[0]["u_memo"].ToString();
return true;
}

//insert data
bool insert(string rid, string uname, string umemo)
{
connection2().Open();
//SqlConnection dataSource2 = new SqlConnection();
//dataSource2.ConnectionString = "data source=192.168.0.115;Initial Catalog= TestUser;UID=sa;Password=123456";
//dataSource2.Open();
string insertsql = "insert into t_user (r_id,u_name,u_memo) values ('" + rid + "','" + uname + "','" + umemo + "')";
SqlCommand cominsert = new SqlCommand(insertsql, connection2());
cominsert.Connection.Open();
int recordInsert = cominsert.ExecuteNonQuery();
SqlDataAdapter dainsert = new SqlDataAdapter("select * from t_user", connection2());
DataSet dsinsert = new DataSet();
dainsert.Fill(dsinsert,"T_USER");
gv_user.DataSource = dsinsert.Tables["T_USER"];
gv_user.DataBind();
//dataSource2.Close();
cominsert.Connection.Close();
connection2().Close();
return true;
}

// upadate data
bool update(int uid,string rid,string uname,string umemo)
{
connection2().Open();
string updatesql = "update t_user set r_id='" + rid + "',u_name='" + uname + "',u_memo='" + umemo + "' where u_id='"+uid+"'";
SqlCommand comupdate = new SqlCommand(updatesql, connection2());
comupdate.Connection.Open();
int recordUpdate = comupdate.ExecuteNonQuery();
SqlDataAdapter daUpdate = new SqlDataAdapter("select * from t_user", connection2());
DataSet dsUpdate = new DataSet();
daUpdate.Fill(dsUpdate, "T_USER");
gv_user.DataSource = dsUpdate.Tables["T_USER"];
gv_user.DataBind();
comupdate.Connection.Close();
connection2().Close();
return true;
}

// delete data
bool delete(string uid)
{
connection2().Open();
string delsql ="delete from t_user where u_id='"+uid+"'";
SqlCommand comDel = new SqlCommand(delsql, connection2());
comDel.Connection.Open();
int recordUpdate = comDel.ExecuteNonQuery();
SqlDataAdapter daDel = new SqlDataAdapter("select * from t_user", connection2());
DataSet dsDel = new DataSet();
daDel.Fill(dsDel, "T_USER");
gv_user.DataSource = dsDel.Tables["T_USER"];
gv_user.DataBind();
comDel.Connection.Close();
connection2().Close();
return true;
}

//data connection 数据联接

SqlConnection connection2()
{
SqlConnection dataSource = new SqlConnection();
dataSource.ConnectionString = "data source=192.168.0.3;Initial Catalog= TestUser;UID=sa;Password=";
return dataSource;
}

//data show 数据显示,绑定gridview
void greidViewBind2()
{

connection2().Open();
SqlCommand command1 = new SqlCommand();
command1.Connection = connection2();
command1.CommandText = "select * from t_user ";
command1.CommandType = CommandType.Text;

//command1.Connection.Open();
DataSet dataSet1 = new DataSet();
SqlDataAdapter dataAdapter1 = new SqlDataAdapter(command1.CommandText, connection2());

dataAdapter1.Fill(dataSet1, "T_USER");
gv_user.DataSource = dataSet1.Tables["T_USER"];
gv_user.DataBind();
//command1.Connection.Close();
connection2().Close();
}
syeerzy 2008-06-16
  • 打赏
  • 举报
回复
另外,Dataset不是数据控件。
syeerzy 2008-06-16
  • 打赏
  • 举报
回复
继承,然后自己加
我姓区不姓区 2008-06-16
  • 打赏
  • 举报
回复
SqlDataAdapter.Update(DataSet)
深入探索了类、接口、属性和方法。讲解了数据结构,演示了如何用ado.net来解决具体的数据访问问题。重点讨论了ado.net如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问api(包括ole db,ado,odbc和jdbc)的程序员,提供了帮助其迁移到ado.net许多易用的参考 本书由资深数据库教师编写,全面介绍了ado.net。书深入剖析了ado.net的本质,探索了类、接口、属性和方法的工作原理,同时还为其他数据访问api(包括oledb,ado,odbc和jdbc)的程序员,提供了有价值的参考材料。本书适合具有一定数据库基础的开发人员阅读,也可用作数据库高级课程或培训班配套教材。 第1章 数据:模型、应用程序和api 1.1 信息、数据建模和数据库 1.2 数据库和api基础 1.3 关系模型 1.3.1 关系设计规则 1.3.2 关系模型的优点 1.3.3 ado.net对关系模型的支持 1.4 层次结构、对象和混合 1.4.1 现代的非关系数据 1.4.2 多维数据 1.4.3 非关系数据和ado.net 1.4.4 xml和信息集 1.4.5 xml、数据库和统一数据表示 1.5 以数据的心的应用程序模型 1.6 数据访问api的发展历程 1.7 小结 第2章 ado.net基础 2.1 数据访问和.net体系结构 2.2 两种数据访问模式 .2.3 连接模式 2.3.1 oledb和sqlclient数据提供程序 2.3.2 使用ado.net数据提供程序编写泛型数据访问代码 2.3.3 数据提供程序模型的游标 2.4 断开模式和dataset 2.5 .net的xml api 2.5.1 流式xml 2.5.2 xml架构 2.5.3 xmldocument,xpath和xpathnavigator 2.5.4 xml和数据提供程序的混合 2.6 托管数据类的布局 2.7 小结 第3章 连接模型:流式数据访问 3.1 .net数据提供程序和连接模型 3.2 连接类 3.3 连接池 3.4 元数据方法 3.5 command类 3.6 使用参数 3.7 命令的准备、取消、超时和清除 3.8 通过datareader进行流式数据传输 3.9 通过idatarecord读取列值 3.10 错误处理 3.11 使用事务处理 3.11.1 分布式事务处理 3.11.2 连接池的工作原理 3.11.3 声明性事务处理的工作原理 3.12 permission类 3.13 小结 第4章 dataset类:关系数据的集合 4.1 dataset 4.1.1 dataset作为驻留内存的数据库 4.1.2 dataset的用途 4.2 dataset对象模型 4.2.1 datacolumn,datarow和data table 4.2.2 data table及其用法 4.2.3 datarow 4.2.4 键、关系和约束 4.2.5 通过关系来导航:select和find 4.2.6 行的添加、获取、更改和删除 4.2.7 合并更改 4.2.8 合并dataset 4.2.9 datarow的状态和版本 4.2.10 规则和关系 4.2.11 错误处理 4.2.12 事件 4.2.13 dataset和非关系类型 4.3 定义信息架构 4.4 小结 第5章 dataadapter:数据库和dataset的同步 5.1 乐观并发性 5.2 dataadapter类 5.3 从托管提供程序填充dataset 5.3.1 在fill使用架构和映射信息 5.3.2 执行dataadapter.fill期间的错误处理 5.4 dataadapter.fill的工作原理 5.5 oledbdataadapter的ado集成 5.6 通过dataadapter更新数据库 5.6.1 commandbuilder类 5.6.2 直接编写更新逻辑 5.7 update的工作原理 5.8 dataset事件模型 5.9 编写常规自定义命令 5.9.1 adox commandbuilder 5.9.2 构造批处理更新命令 5.10 再论dataset和非关系数据类型 5.11 应该使用dataset还是datareader 5.12 小结 第6章 数据绑定:ado.net和gui 6.1 windows窗体和web窗体 6.2 数据表示模式 6.3 使用数据绑定控件 6.3.1 web窗体数据绑定类型 6.3.2 数据绑定控件类型解析 6.3.3 同datareader绑定 6.4 用dataset进行数据绑定 6.5 data view和通用转换 6.6 表和列映射 6.7 可编辑的列表控件:datalist和datagrid 6.7.1 datalist 6.7.2 datagrid 6.8 非关系数据和data view 6.9 与visual studio的集成 6.10 控件和数据窗体 6.1l 小结 第7章 xml和数据访问的集成 7.1 xml和传统数据访问 7.2 xml和ado.net 7.2.1 定义dataset的架构 7.2.2 优化dataset的xml架构 7.2.3 将xml读入dataset 7.2.4 从dataset写入xml架构 7.2.5 microsoft特有的批注 7.2.6 从dataset写入xml数据 7.3 序列化、封送和dataset 7.4 类型化的dataset 7.5 xmldatadocument类 7.5.1 xmldatadocument和dataset 7.5.2 xmldatadocument和datadocumentxpathnavigator 7.6 数据库和xml的重要意义 7.6.1 xml作为一种特定类型 7.6.2 文档合成与分解 7.7 sql server、xml和托管数据访问 7.7.1 for xml关键字 7.7.2 openxml 7.7.3 sqloledb提供程序 7.7.4 sqlxml托管类 7.7.5 sqlxml web应用程序 7.7.6 updategram 7.7.7 sql xml oledb提供程序的for xml 7.7.8 批量加载 7.7.9 未来的支持 7.8 使用sqlxml和.net 7.9 小结 第8章 提供程序:ado.net和数据提供程序 8.1 如何选择 8.2 保留ole db:ole db概念总结 8.3 保留ole db:与oledb数据提供程序交互 8.3.1 主要的共型和类型映射 8.3.2 访问程序 8.3.3 执行命令、返回结果和使用openrowset 8.3.4 command的最终格式和行为 8.3.5 command dialect 8.3.6 层次化数据 8.3.7 从rowset更新 8.3.8 错误 8.3.9 不支持的功能 8.3.10 支持和不支持的提供程序 8.4 编写数据提供程序 8.5 实现connection类 8.5.1 规格 8.5.2 实现 8.5.3 特殊化 8.6 实现command类 8.6.1 规格 8.6.2 实现 8.6.3 特殊化 8.7 实现datareader类 8.7.1 规格 8.7.2 实现 8.7.3 特殊化 8.8 实现dataadapter类 8.8.1 规格 8.8.2 实现 8.8.3 特殊化 8.9 添加增强功能 8.10 实现xml infoset提供程序 8.11 实现xmlreader 8.12 实现xpathnavigator 8.13 其他实现方案:总结 8.14 论证大一统访问模型的可行性 8.15 小结 第9章 消费者的ado.net迁移路径 9.1 ado.net迁移路径 9.2 面向ole db程序员的ado.net 9.2.1 cotype等价物 9.2.2 数据提供程序的透明性 9.2.3 使用提供程序特有的功能 9.2.4 错误处理 9.2.5 系统提供的服务 9.2.6 系统提供的组件 9.2.7 服务提供程序 9.2.8 封送 9.3 ado概述 9.4 面向ado程序员的ado.net 9.5 ado connection、command和事务处理 9.5.1 连接和连接字符串 9.5.2 使用事务处理 9.5.3 命令和command行为 9.5.4 层次化数据 9.5.5 异步操作 9.5.6 属性 9.6 ado.net与ado断开模型的比较 9.6.1 类的等价物 9.6.2 导航 9.6.3 ado.net的getrows有何变化 9.6.4 更新 9.6.5 创建更新语句 9.6.6 批处理更新 9.6.7 ado.net的dataset扩展 9.6.8 列和表的命名 9.6.9 排序和筛选 9.7 ado db的互操作性 9.8 面向odbc程序员的ado.net 9.8.1 句柄和环境 9.8.2 命令 9.8.3 获取数据 9.8.4 元数据和架构信息 9.8.5 错误 9.9 面向jdbc程序员的ado.net 9.9.1 泛化代码 9.9.2 提供程序的类型 9.9.3 连接池 9.9.4 非关系数据类型 9.9.5 对象数据库 9.9.6 其他sql-99扩展 9.9.7 元数据 9.9.8 事务处理 9.9.9 命令和行为 9.9.10 执行查询和返回结果 9.9.11 服务器游标 9.9.12 错误 9.10 ado.net jdbc程序员和断开模型 9.11 sql/j part 0和类型化dataset 9.12 小结 第10章 ado.net和各种数据类型 10.1 数据访问的发展历程 10.2 ado.net和基于服务器及文件的rdbms 10.3 ado.net和同种层次结构数据及ordbms 10.4 ado.net和网络数据:对象图、odbms与网络dbms 10.5 ado.net和结构化文件、多维数据及ordbms 10.6 ado.net平面文件和半结构化文件 10.7 小结 附录a 数据类型和类型映射 a.1 db type枚举 a.2 将sql server数据类型映射到sqltype及sqldbtype a.3 将ole db dbtype映射到.net数据类型 a.4 odbc类型映射 a.5 parameter.dbtype 附录b 表达式的语法 b.1 用户自定义值 b.2 运算符 b.3 字符串运算符 b.4 通配符 b.5 父/子关系引用 b.6 聚合 b.7 函数 附录c 架构推断规则 c.1 排除信息 c.2 推断过程总结 c.3 表 c.4 有属性的元素 c.5 有子元素的元素 c.6 重复元素 c.7 列 c.8 属性 c.9 没有属性或子元素的元素 c.10 关系 c.11 元素文本 c.12 限制

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧