asp.net新建表单保存和提交的问题解决方案
2015-11-11 10:25
483 查看
问题描述:
作为信息管理系统,表单的新建页面,包括保存和提交操作。作为使用者,不知道编程的机制,如何保证使用保存和提交按钮,都能保证数据正确写入数据库中,如何消除两者之间的差异,给用户的感觉是两者之间都是一样的方便、准确和快捷?
这里给出了一种解决方案。通过在页面放置一个隐藏的label标签,本标签主要用于保存插入语句返回的自增长id的值,并设置其初始值为“None"。然后,在保存中根据隐藏标签的值,判断使用数据库插入语句,还是数据库更新语句。
下面是保存公用函数的C#代码实现:
private int SaveDataInfo(string state, string msg)
{
Dictionary<string, string> tableKeyVals = new Dictionary<string, string>();
ArrayList temp = new ArrayList();
GetAllControlKeyVals(this, tableKeyVals, ref temp);//获取信息
if ("None" == lb_none_approvalID.Text)
{//执行插入操作
if (dataInsertDb(tableKeyVals, state) > 0)
{
MyClientScript.ygJScript.Alert(msg + "成功", this);
userCtr1.SetTableKeyValue(lb_none_approvalID.Text);//上传设置3
return 1;
}
else
{
MyClientScript.ygJScript.Alert(msg + "失败", this);
return 0;
}
}
else
{//执行更新操作
if (dataUpdateDb(tableKeyVals, state) > 0)
{
MyClientScript.ygJScript.Alert(msg + "成功", this);
return 1;
}
else
{
MyClientScript.ygJScript.Alert(msg + "失败", this);
return 0;
}
}
}下面是UPdate和Insert语句结合可输入元素键值对字典对象,实现的数据的更新和插入操作的代码实现的例子。
private int dataUpdateDb(Dictionary<string, string> tableKeyVals, string state)
{
string sql = "update tb_approval set ";
foreach (KeyValuePair<string, string> item in tableKeyVals)
{
sql += item.Key.Split('_')[1] + "='" + item.Value + "',";
}
sql += "addTime='" + DateTime.Now.ToString() + "',state='" + state + "' where approvalID='" + lb_none_approvalID.Text + "'";
if (MyDBInterface.getNothingByText(sql) > 0)
{
return 1;
}
else
{
return 0;
}
}
private int dataInsertDb(Dictionary<string, string> tableKeyVals, string state)
{
string sql = "insert into tb_approval(";
string sqlTemp = " values('";
foreach (KeyValuePair<string, string> item in tableKeyVals)
{
sql += item.Key.Split('_')[1] + ",";
sqlTemp += item.Value + "','";
}
sql += "addUserID,addUserName,addTime,state)";
sqlTemp += user.UserID + "','" + user.UserName + "','" + DateTime.Now.ToString() + "','" + state + "');select SCOPE_IDENTITY()";
sql += sqlTemp;//拼凑到完成sql语句
DataTable resDt = MyDBInterface.getTableByText(sql);
if (resDt != null && resDt.Rows.Count > 0)
{
lb_none_approvalID.Text = resDt.Rows[0][0].ToString();//记录插入后的返回ID
return 1;
}
else
{
return 0;
}
}
至此,整个的数据表单的保存和提交操作基本完成。最后的工作就是如何在保存和提交时,正确的调用函数做出判断。
作为信息管理系统,表单的新建页面,包括保存和提交操作。作为使用者,不知道编程的机制,如何保证使用保存和提交按钮,都能保证数据正确写入数据库中,如何消除两者之间的差异,给用户的感觉是两者之间都是一样的方便、准确和快捷?
这里给出了一种解决方案。通过在页面放置一个隐藏的label标签,本标签主要用于保存插入语句返回的自增长id的值,并设置其初始值为“None"。然后,在保存中根据隐藏标签的值,判断使用数据库插入语句,还是数据库更新语句。
下面是保存公用函数的C#代码实现:
private int SaveDataInfo(string state, string msg)
{
Dictionary<string, string> tableKeyVals = new Dictionary<string, string>();
ArrayList temp = new ArrayList();
GetAllControlKeyVals(this, tableKeyVals, ref temp);//获取信息
if ("None" == lb_none_approvalID.Text)
{//执行插入操作
if (dataInsertDb(tableKeyVals, state) > 0)
{
MyClientScript.ygJScript.Alert(msg + "成功", this);
userCtr1.SetTableKeyValue(lb_none_approvalID.Text);//上传设置3
return 1;
}
else
{
MyClientScript.ygJScript.Alert(msg + "失败", this);
return 0;
}
}
else
{//执行更新操作
if (dataUpdateDb(tableKeyVals, state) > 0)
{
MyClientScript.ygJScript.Alert(msg + "成功", this);
return 1;
}
else
{
MyClientScript.ygJScript.Alert(msg + "失败", this);
return 0;
}
}
}下面是UPdate和Insert语句结合可输入元素键值对字典对象,实现的数据的更新和插入操作的代码实现的例子。
private int dataUpdateDb(Dictionary<string, string> tableKeyVals, string state)
{
string sql = "update tb_approval set ";
foreach (KeyValuePair<string, string> item in tableKeyVals)
{
sql += item.Key.Split('_')[1] + "='" + item.Value + "',";
}
sql += "addTime='" + DateTime.Now.ToString() + "',state='" + state + "' where approvalID='" + lb_none_approvalID.Text + "'";
if (MyDBInterface.getNothingByText(sql) > 0)
{
return 1;
}
else
{
return 0;
}
}
private int dataInsertDb(Dictionary<string, string> tableKeyVals, string state)
{
string sql = "insert into tb_approval(";
string sqlTemp = " values('";
foreach (KeyValuePair<string, string> item in tableKeyVals)
{
sql += item.Key.Split('_')[1] + ",";
sqlTemp += item.Value + "','";
}
sql += "addUserID,addUserName,addTime,state)";
sqlTemp += user.UserID + "','" + user.UserName + "','" + DateTime.Now.ToString() + "','" + state + "');select SCOPE_IDENTITY()";
sql += sqlTemp;//拼凑到完成sql语句
DataTable resDt = MyDBInterface.getTableByText(sql);
if (resDt != null && resDt.Rows.Count > 0)
{
lb_none_approvalID.Text = resDt.Rows[0][0].ToString();//记录插入后的返回ID
return 1;
}
else
{
return 0;
}
}
至此,整个的数据表单的保存和提交操作基本完成。最后的工作就是如何在保存和提交时,正确的调用函数做出判断。
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- Patrol 7 架构下?的处理方法
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 中病毒后常用的解决方法病毒终极解决方案
- 星外ASP.Net的安全设置相关说明
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- 在线用表单建立文件夹
- CentOS下DB2数据库安装过程详解
- Jquery 表单取值赋值的一些基本操作
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案