关于datarow 事件操作 我想写datarow几个事件,包括beforenew()afternew()beforeedit()afteredit()beforedelete()afterdelete()想写在基类里,但是不知道怎么写,哪位给点思路给我,有代码就更好了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 cSI.dt.RowDeleted += new DataRowChangeEventHandler( Row_Deleted ); private void Row_Deleted( object sender, DataRowChangeEventArgs e ) { txt_amount.Text=Cs.Amount(cSI.dt,"总价").ToString(); } to;cansum396(沉觉不醒) ( ) 谢谢,高人回答,我想问下1。在操作这些事件的时候是不是也在基类里写这些事件,或者其他的2。在datatable 类里我看见了 RowChanged 在成功更改 DataRow 之后发生。 RowChanging 在 DataRow 正在更改时发生。 RowDeleted 在表中的行已被删除后发生。 RowDeleting 在表中的行要被删除之前发生。 但是beforenew() afternew()如何添加 ,ms datatable类里面没有这几个事件的 to:Knight94(愚翁) ( ) 呵呵 ,你好 又见面了。其实就是在操作datarow是做下校验用的,就是在提交dataset之前校验 比如 myTable.Rows.Add(myRow);我在Add之前我先对一些数据进行校验所以希望写在基类里 不建议做在DataRow中,正确的地方应该控制输入端,例如:如果绑定的是datagrid,那么应该控制datagrid中的输入来符合没个字段的标准。 1。问下 :可不可以DataRow中实现 :) 麻烦给点解决方案2。除了校验数据,其实我还要做一些辅助性数据修改 例如我修改某基础资料 比如单位代码我在业务单据里使用了这个单位代码 我就要在把基础资料里的记录的状态改为已使用。 午饭时间 ,hehe 大家吃饭。。 to 1。问下 :可不可以DataRow中实现 :) 麻烦给点解决方案要做也不是在DataRow中去做,而是在DataTable中去做一个DataRow脱离了DataTable就没什么意义了。 我这里有段这样的代码 public DataBase.EditStatus Status{get{if(null == _data || 0 == _data.Tables.Count || 0 == _data.Tables[mainTable].Rows.Count)return EditStatus.esEmpty;if(autoStatus){DataRow dr = _data.Tables[mainTable].Rows[0];if(DataRowState.Unchanged == dr.RowState) return EditStatus.esNoChange;if(DataRowState.Added == dr.RowState) return EditStatus.esNew;if(DataRowState.Deleted == dr.RowState) return EditStatus.esDelete;if(DataRowState.Modified == dr.RowState) return EditStatus.esEdit;return EditStatus.esEmpty;}else{return editStatus;}}}[System.EnterpriseServices.AutoComplete]protected internal virtual void UpdateToDB(DataBase dataObject){_data = dataObject._data.Copy();bool isDelete = false;if(_data.Tables[dataObject.mainTable].Rows.Count > 0)if(DataRowState.Deleted == _data.Tables[dataObject.mainTable].Rows[0].RowState)_data.RejectChanges();if(DataBase.EditStatus.esNew == dataObject.Status)BeforeNew(dataObject);if(DataBase.EditStatus.esEdit == dataObject.Status && !dataObject._inteUse)BeforeEdit(dataObject);if(DataBase.EditStatus.esDelete == dataObject.Status){isDelete = true;BeforeDelete(dataObject);}try{string[] sqls = _sql.Split(';');int i = 0;foreach(DataTable dt in dataObject._data.Tables){dba.UpdateTableToDB(dt, sqls[i]);i++;}}catch(SqlException e){string msg = "";for(int i = 0; i < e.Errors.Count; i++){switch(e.Errors[i].Number){case 2627: msg+="代码已存在\n"; break;case 3621: break;default: msg += e.Errors[i].Number.ToString() + ":" + e.Errors[i].Message.TrimEnd() + "\n"; break;}}throw new Fa_Util.CustomerException(msg, e);}if(DataBase.EditStatus.esNew == dataObject.Status)AfterNew(dataObject);if(DataBase.EditStatus.esEdit == dataObject.Status && !dataObject._inteUse)AfterEdit(dataObject);if(isDelete)AfterDelete(dataObject);}我不太看的懂,比较菜 呵呵 Knight94能不能讲解下里面 具体的含义 我要有个思路 没有什么复杂的,第一部分是一个属性根据当前MainTable中的第一个记录来进行当前状态进行返回。第二部分是根据状态以及相应的sql语句来操作各个DataTable。 to()Knight94(愚翁) 恩 这个问题我慢慢看把再请教下 把程序做成服务后使用 ,但是我这个服务要依赖于sqlserver服务能告诉我要用什么类可以实现.(C#程序) 你创建服务类型项目,增加ServiceInstaller的时候,设置其的ServicesDependedOn 属性。 呵呵,多谢 Knight94(愚翁) 以后请多多指教。 winform怎么实现一个新窗体修改项,本窗体马上更改呢? C# word 每页统计 请问怎样设置回车键(Enter)登录? 水印 如何在C#语言中使用嵌入式sql语句? WPF IsKeyDown 为什么shape 图形删除后,鼠标点击事件还有效? TcpListener的AcceptSocket() 问题,请大家高手帮帮忙,谢谢呵呵。 在线跪等:如何让一个控件始终显示在另一个控件之上 怎样从一个StreamReader的尾部开始ReadLine? 请问如何控制DataGridView控件的显示列数? 求一超简单的正则表达式
{
txt_amount.Text=Cs.Amount(cSI.dt,"总价").ToString();
}
谢谢,高人回答,我想问下
1。在操作这些事件的时候是不是也在基类里写这些事件,或者其他的
2。
在datatable 类里我看见了
RowChanged 在成功更改 DataRow 之后发生。
RowChanging 在 DataRow 正在更改时发生。
RowDeleted 在表中的行已被删除后发生。
RowDeleting 在表中的行要被删除之前发生。
但是beforenew()
afternew()
如何添加 ,ms datatable类里面没有这几个事件的
呵呵 ,你好 又见面了。
其实就是在操作datarow是做下校验用的,就是在提交dataset之前校验
比如 myTable.Rows.Add(myRow);我在Add之前我先对一些数据进行校验
所以希望写在基类里
例如:如果绑定的是datagrid,那么应该控制datagrid中的输入来符合没个字段的标准。
可不可以DataRow中实现 :) 麻烦给点解决方案2。除了校验数据,其实我还要做一些辅助性数据修改 例如我修改某基础资料 比如单位代码
我在业务单据里使用了这个单位代码 我就要在把基础资料里的记录的状态改为已使用。
可不可以DataRow中实现 :) 麻烦给点解决方案要做也不是在DataRow中去做,而是在DataTable中去做
一个DataRow脱离了DataTable就没什么意义了。
public DataBase.EditStatus Status
{
get
{
if(null == _data || 0 == _data.Tables.Count || 0 == _data.Tables[mainTable].Rows.Count)
return EditStatus.esEmpty;
if(autoStatus)
{
DataRow dr = _data.Tables[mainTable].Rows[0];
if(DataRowState.Unchanged == dr.RowState)
return EditStatus.esNoChange;
if(DataRowState.Added == dr.RowState)
return EditStatus.esNew;
if(DataRowState.Deleted == dr.RowState)
return EditStatus.esDelete;
if(DataRowState.Modified == dr.RowState)
return EditStatus.esEdit;
return EditStatus.esEmpty;
}
else
{
return editStatus;
}
}
}[System.EnterpriseServices.AutoComplete]
protected internal virtual void UpdateToDB(DataBase dataObject)
{
_data = dataObject._data.Copy();
bool isDelete = false;
if(_data.Tables[dataObject.mainTable].Rows.Count > 0)
if(DataRowState.Deleted == _data.Tables[dataObject.mainTable].Rows[0].RowState)
_data.RejectChanges();
if(DataBase.EditStatus.esNew == dataObject.Status)
BeforeNew(dataObject);
if(DataBase.EditStatus.esEdit == dataObject.Status && !dataObject._inteUse)
BeforeEdit(dataObject);
if(DataBase.EditStatus.esDelete == dataObject.Status)
{
isDelete = true;
BeforeDelete(dataObject);
}
try
{
string[] sqls = _sql.Split(';');
int i = 0;
foreach(DataTable dt in dataObject._data.Tables)
{
dba.UpdateTableToDB(dt, sqls[i]);
i++;
}
}
catch(SqlException e)
{
string msg = "";
for(int i = 0; i < e.Errors.Count; i++)
{
switch(e.Errors[i].Number)
{
case 2627: msg+="代码已存在\n";
break;
case 3621: break;
default: msg += e.Errors[i].Number.ToString() + ":" + e.Errors[i].Message.TrimEnd() + "\n";
break;
}
}
throw new Fa_Util.CustomerException(msg, e);
}if(DataBase.EditStatus.esNew == dataObject.Status)
AfterNew(dataObject);
if(DataBase.EditStatus.esEdit == dataObject.Status && !dataObject._inteUse)
AfterEdit(dataObject);
if(isDelete)
AfterDelete(dataObject);
}我不太看的懂,比较菜 呵呵 Knight94能不能讲解下里面 具体的含义 我要有个思路
根据当前MainTable中的第一个记录来进行当前状态进行返回。第二部分是根据状态以及相应的sql语句来操作各个DataTable。
再请教下 把程序做成服务后使用 ,但是我这个服务要依赖于sqlserver服务
能告诉我要用什么类可以实现.(C#程序)