我想写datarow几个事件,包括
beforenew()
afternew()
beforeedit()
afteredit()
beforedelete()
afterdelete()
想写在基类里,但是不知道怎么写,哪位给点思路给我,有代码就更好了
beforenew()
afternew()
beforeedit()
afteredit()
beforedelete()
afterdelete()
想写在基类里,但是不知道怎么写,哪位给点思路给我,有代码就更好了
解决方案 »
- 如何用C#取得和设置QQ2013登录框的QQ号码?我用WinAPI没有办法得到 谢谢
- 急急!!!.xml文件怎么打开时老出错 求解。急
- winform下listview
- 序列化的必要性及网络传输
- 怎样用GDI+ 将两个已知圆点,半径的圆连接起来?难点在于不是连接圆心而是要通过圆的边进行连接
- 在程序中往这个表插数据的同时获得这个触发器生成的编号 问题
- 怎样把RichTextBox加到 Web窗体中 解决了马上撒分
- 有没有最新最强的.Net混淆器?
- 用C#能做一个系统级的钩子吗?
- 如何把程序运行后的Press Any Key to continue去掉?
- 请问如何控制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#程序)