asp.net新建表单保存和提交的问题解决方案

本文针对ASP.NET信息管理系统中表单保存和提交可能存在的差异问题,提出一种解决方案。通过在页面添加隐藏Label,利用其保存自增长ID,以判断执行插入或更新数据库的操作,确保用户在使用保存和提交时体验一致且数据准确写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

作为信息管理系统,表单的新建页面,包括保存和提交操作。作为使用者,不知道编程的机制,如何保证使用保存和提交按钮,都能保证数据正确写入数据库中,如何消除两者之间的差异,给用户的感觉是两者之间都是一样的方便、准确和快捷?

这里给出了一种解决方案。通过在页面放置一个隐藏的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;
        }
    }

至此,整个的数据表单的保存和提交操作基本完成。最后的工作就是如何在保存和提交时,正确的调用函数做出判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值