js动态生成的表单怎么提交到数据库

时间:2022-01-18 08:03:29
如题在后台用了hidden和cookies都获取不到前面的值


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="ContractSystem.WebUI.WebForm3" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="js/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
        var $ = function (id) {
            return document.getElementById(id);
        }

        //全选
        function checkAll(target) {
            var checkeds = document.getElementsByName("b_id");
            for (var i = 0; i < checkeds.length; i++) {
                checkeds[i].checked = target.checked;
            }
        }
        function checkAll1(target) {
            var checkeds = document.getElementsByName("b_id1");
            for (var i = 0; i < checkeds.length; i++) {
                checkeds[i].checked = target.checked;
            }
        }
        //刷新行号
        function refreshRowNo() {
            var tbody = $("tbody");
            for (var i = 0; i < tbody.rows.length; i++) {
                tbody.rows[i].cells[0].innerHTML = i + 1;
            }
        }
        function refreshRowNo1() {
            var tbody = $("tbody1");
            for (var i = 0; i < tbody.rows.length; i++) {
                tbody.rows[i].cells[0].innerHTML = i + 1;
            }
        }
        //添加行
        function AddRow() {
            var tbody = $("tbody");
            var row = tbody.insertRow(tbody.rows.length);
            row.insertCell(row.cells.length);
            row.insertCell(row.cells.length).innerHTML = '<input type="checkbox" name="b_id" style="text-align: center"/>';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 86px" name="name" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 350px" name="number" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 350px" name="price" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 180px" name="sum" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 180px" name="beizhu" />';
            refreshRowNo();
        }


        function AddRow1() {
            var tbody = $("tbody1");
            var row = tbody.insertRow(tbody.rows.length);
            row.insertCell(row.cells.length);
            row.insertCell(row.cells.length).innerHTML = '<input type="checkbox" name="b_id1" style="text-align: center"/>';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 86px" name="name1" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 350px" name="number1" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 350px" name="price1" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 180px" name="sum1" />';
            row.insertCell(row.cells.length).innerHTML = '<textarea style="height: 99px; width: 180px" name="beizhu1" />';
            refreshRowNo1();
        }
        //删除行
        function DelRow() {
            var checkeds = document.getElementsByName("b_id");
            var ischeck = false;
            for (var i = checkeds.length - 1; i >= 0; i--) {
                if (checkeds[i].checked) {
                    ischeck = true;
                    break;
                }
            }
            if (ischeck) {
                if (confirm("确定删除选中行?")) {
                    for (var i = checkeds.length - 1; i >= 0; i--) {
                        if (checkeds[i].checked) {
                            var index = checkeds[i].parentNode.parentNode.rowIndex;
                            $("tbody").deleteRow(index - 1);
                        }
                    }
                    refreshRowNo();
                }
            } else {
                alert("请选中需要删除的行!");
            }
        }

        function DelRow1() {
            var checkeds = document.getElementsByName("b_id1");
            var ischeck = false;
            for (var i = checkeds.length - 1; i >= 0; i--) {
                if (checkeds[i].checked) {
                    ischeck = true;
                    break;
                }
            }
            if (ischeck) {
                if (confirm("确定删除选中行?")) {
                    for (var i = checkeds.length - 1; i >= 0; i--) {
                        if (checkeds[i].checked) {
                            var index = checkeds[i].parentNode.parentNode.rowIndex;
                            $("tbody1").deleteRow(index - 1);
                        }
                    }
                    refreshRowNo();
                }
            } else {
                alert("请选中需要删除的行!");
            }
        }
        //保存
        function Save() {
            var detail = [],
                tbody = $("tbody");
            for (var i = 0; i < tbody.rows.length; i++) {
                var name = tbody.rows[i].cells[2].childNodes[0].value;
                var number = tbody.rows[i].cells[3].childNodes[0].value;
                var price = tbody.rows[i].cells[4].childNodes[0].value;
                var sum = tbody.rows[i].cells[5].childNodes[0].value;
                var item = name + "^" + number + "^" + price + "^" + sum;
                detail.push(item);
                
            }
         
            var detailstr = detail.join("|");
            alert(detailstr)
            $("detail").value = detailstr;
                    
        
            $("myform").submit();
            
        }
       
</script>
    <style type="text/css">
        .auto-style2 {
            background-color: #999999;
        }
        .auto-style3 {
            background-color: #999999;
            width: 60px;
        }
        </style>
</head>
<body>
    <form id="form1" runat="server" >
    <div>
        <div>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
        <table style="text-align:center">
            <tr>
                <td style="background-color: #999999">

                    上级安排<br />
                    的工作<br />
                    <input type="button" onclick="AddRow()" value="增加一行" />
                    <br />
        <input type="button" onclick="DelRow()" value="删除" />
                    <br />
        <input type="button" onclick="Save()" value="保存" /></td>
                <td>

                     <table cellpadding="1" cellspacing="1" border="1">
    <%--<tr><th colspan="7">上级安排工作&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </th></tr>--%>
    <tr>
        <th class="auto-style3">序号</th>
        <th style="width:20px" class="auto-style2"><input type="checkbox" onclick="checkAll(this)" /></th>
        <th class="auto-style2">用时</th>
        <th style="width:120px" class="auto-style2">工作内容</th>
        <th style="width:120px" class="auto-style2">完成进度/结果</th>
        <th style="width:120px" class="auto-style2">存在问题 </th>
        <th style="width:120px" class="auto-style2">备注 <input type="hidden" id="hd" name="hd" runat="server"/></th>
    </tr>
    <tbody id="tbody">
        <tr>
             
            <td style="text-align: center">1</td>
           <td class="auto-style"><input type="checkbox" name="b_id" style="text-align: center" /></td>
            <td ><textarea style="height: 99px; width: 86px" name="name"></textarea></td>
            <td><textarea style="height: 99px; width: 350px" name="number"></textarea></td>
            <td><textarea style="height: 99px; width: 350px" name="price"></textarea></td>
            <td><textarea style="height: 99px; width: 180px" name="sum"></textarea></td>
            <td><textarea style="height: 99px; width: 180px" name="beizhu"></textarea></td>
           
        </tr>
    </tbody>
</table>
                </td>
            </tr>

        </table>
       <table style="text-align:center">
           <tr>
               <td style="background-color: #999999;">

                    本部门<br />
                    工作<br />
                    <input type="button" onclick="AddRow1()" value="增加一行" />
                    <br />
        <input type="button" onclick="DelRow1()" value="删除" />
                    <br />
        <input type="button" onclick="Save1()" value="保存" /></td>
               <td>

                    <table cellpadding="1" cellspacing="1" border="1" >
   
    <tr>
        <th class="auto-style3">序号</th>
        <th style="width:20px" class="auto-style2"><input type="checkbox" onclick="checkAll1(this)" /></th>
        <th class="auto-style2">用时</th>
        <th style="width:120px" class="auto-style2">工作内容</th>
        <th style="width:120px" class="auto-style2">完成进度/结果</th>
        <th style="width:120px" class="auto-style2">存在问题 </th>
        <th style="width:120px" class="auto-style2">备注 <input type="hidden" id="hd1" name="hd1" runat="server"/></th>
    </tr>
 

23 个解决方案

#1



   <tbody id="tbody1">
        <tr>
             
            <td style="text-align: center" >1</td>
           <td class="auto-style"><input type="checkbox" name="b_id1" style="text-align: center" /></td>
            <td ><textarea style="height: 99px; width: 86px" name="name1"></textarea></td>
            <td><textarea style="height: 99px; width: 350px" name="number1"></textarea></td>
            <td><textarea style="height: 99px; width: 350px" name="price1"></textarea></td>
            <td><textarea style="height: 99px; width: 180px" name="sum1"></textarea></td>
            <td><textarea style="height: 99px; width: 180px" name="beizhu1"></textarea></td>
           
        </tr>
    </tbody>
</table>
               </td>
           </tr>
       </table>
       
    </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="保 存" />
        <br />
           
    </form>
</body>
</html>

#2


我上次也是前台用js动态生产各种所需表单,然后获取数据太烦了,而且数据量太大,所以存的整个html代码

#3


引用 2 楼 yangmingxing980 的回复:
我上次也是前台用js动态生产各种所需表单,然后获取数据太烦了,而且数据量太大,所以存的整个html代码

整个html怎么取出来,不会html不会是在文本编辑器里吧

#4


后台获取用Request[""]

#5


引用 4 楼 u013636763 的回复:
后台获取用Request[""]

试了,取不到,空值,没提交之前js能取到值,一点提交按钮,来到后台就空值了

#6


把后台代码发出来看看

#7


httpcontext 貌似用这个获取的   js动态生成的表单怎么提交到数据库

#8


引用 6 楼 u013636763 的回复:
把后台代码发出来看看

后台用Request啊,变量都提不出来

#9


不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

#10


引用 9 楼 nice_fish 的回复:
不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

一样空间,你定义的跟我原来的都一样啊,就是没叫个value=""

#11


Request.Form应该是可以取到的

#12


引用 10 楼 loveshrimp423 的回复:
Quote: 引用 9 楼 nice_fish 的回复:

不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

一样空间,你定义的跟我原来的都一样啊,就是没叫个value=""


你后端的是怎么获取的?不是直接点出来的吗?你难道没有在提交表单之前将你的数据以合理的形式存储到这个value里面?

#13


引用 12 楼 nice_fish 的回复:
Quote: 引用 10 楼 loveshrimp423 的回复:

Quote: 引用 9 楼 nice_fish 的回复:

不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

一样空间,你定义的跟我原来的都一样啊,就是没叫个value=""


你后端的是怎么获取的?不是直接点出来的吗?你难道没有在提交表单之前将你的数据以合理的形式存储到这个value里面?


hidden的ID是"hd",在function Save() 里有个变量detailstr, 这里alert(detailstr)正常的,是有值,在这里下面加了 $("#hd").val(detailstr);
后面用a = this.hd.Value;(取出来空)

#15


引用 14 楼 Joyhen 的回复:
http://blog.csdn.net/joyhen/article/details/19575215
http://tool.oschina.net/apidocs/apidoc?api=jquery

例子不太合用,我上面的不定行数的,不同的行id名都是一样的

能否帮我把我上面发的改改,让后台能够取到填写的值,急着用

#17


引用 15 楼 loveshrimp423 的回复:
...

可以的哦,一个是直接ajax,另一个思路是,button按钮的客户端单击事件先获取表单数据json对象(用jq
的serializeArray()方法),把获取的对象转成json串,放到一个也没的隐藏控件中,然后Click事件对应的方法在后台获取这个隐藏控件的值。2中方式看你怎么用咯

#18


var array=$("form1").serializeArray();//直接序列化为json数组  
array['requestType']=type;//添加请求类型的键值  
   
$.post("AddProductInfo.aspx",array,function(result){//直接把追加值之后的Json数组传过去就好了  
   //pass  
}) 

#19


你每个生成出来的菜单name貌似都叫的一样啊,Request.Form就取不到了

#20


首先,动态生成标签,必须是放在表单里面,
这样表单才能把数据提交回去。
其次,动态生成的标签,id和name要注意别重复
最后,提交时要看清楚,不要提交错了表单。。。。。。

#21


服务器按钮回发了,所以没东西了

#22


结帖了,用自己的方法解决了

#23


引用 22 楼 loveshrimp423 的回复:
结帖了,用自己的方法解决了


你是怎么解决的呢?

#1



   <tbody id="tbody1">
        <tr>
             
            <td style="text-align: center" >1</td>
           <td class="auto-style"><input type="checkbox" name="b_id1" style="text-align: center" /></td>
            <td ><textarea style="height: 99px; width: 86px" name="name1"></textarea></td>
            <td><textarea style="height: 99px; width: 350px" name="number1"></textarea></td>
            <td><textarea style="height: 99px; width: 350px" name="price1"></textarea></td>
            <td><textarea style="height: 99px; width: 180px" name="sum1"></textarea></td>
            <td><textarea style="height: 99px; width: 180px" name="beizhu1"></textarea></td>
           
        </tr>
    </tbody>
</table>
               </td>
           </tr>
       </table>
       
    </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="保 存" />
        <br />
           
    </form>
</body>
</html>

#2


我上次也是前台用js动态生产各种所需表单,然后获取数据太烦了,而且数据量太大,所以存的整个html代码

#3


引用 2 楼 yangmingxing980 的回复:
我上次也是前台用js动态生产各种所需表单,然后获取数据太烦了,而且数据量太大,所以存的整个html代码

整个html怎么取出来,不会html不会是在文本编辑器里吧

#4


后台获取用Request[""]

#5


引用 4 楼 u013636763 的回复:
后台获取用Request[""]

试了,取不到,空值,没提交之前js能取到值,一点提交按钮,来到后台就空值了

#6


把后台代码发出来看看

#7


httpcontext 貌似用这个获取的   js动态生成的表单怎么提交到数据库

#8


引用 6 楼 u013636763 的回复:
把后台代码发出来看看

后台用Request啊,变量都提不出来

#9


不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

#10


引用 9 楼 nice_fish 的回复:
不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

一样空间,你定义的跟我原来的都一样啊,就是没叫个value=""

#11


Request.Form应该是可以取到的

#12


引用 10 楼 loveshrimp423 的回复:
Quote: 引用 9 楼 nice_fish 的回复:

不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

一样空间,你定义的跟我原来的都一样啊,就是没叫个value=""


你后端的是怎么获取的?不是直接点出来的吗?你难道没有在提交表单之前将你的数据以合理的形式存储到这个value里面?

#13


引用 12 楼 nice_fish 的回复:
Quote: 引用 10 楼 loveshrimp423 的回复:

Quote: 引用 9 楼 nice_fish 的回复:

不会吧,我自己试过这种形式都可以成功获取动态获取的内容

你将hidden标签换成这种看看:

<input type="hidden" value="" runat="server" id="hidforminfo" />

一样空间,你定义的跟我原来的都一样啊,就是没叫个value=""


你后端的是怎么获取的?不是直接点出来的吗?你难道没有在提交表单之前将你的数据以合理的形式存储到这个value里面?


hidden的ID是"hd",在function Save() 里有个变量detailstr, 这里alert(detailstr)正常的,是有值,在这里下面加了 $("#hd").val(detailstr);
后面用a = this.hd.Value;(取出来空)

#14


#15


引用 14 楼 Joyhen 的回复:
http://blog.csdn.net/joyhen/article/details/19575215
http://tool.oschina.net/apidocs/apidoc?api=jquery

例子不太合用,我上面的不定行数的,不同的行id名都是一样的

能否帮我把我上面发的改改,让后台能够取到填写的值,急着用

#16


#17


引用 15 楼 loveshrimp423 的回复:
...

可以的哦,一个是直接ajax,另一个思路是,button按钮的客户端单击事件先获取表单数据json对象(用jq
的serializeArray()方法),把获取的对象转成json串,放到一个也没的隐藏控件中,然后Click事件对应的方法在后台获取这个隐藏控件的值。2中方式看你怎么用咯

#18


var array=$("form1").serializeArray();//直接序列化为json数组  
array['requestType']=type;//添加请求类型的键值  
   
$.post("AddProductInfo.aspx",array,function(result){//直接把追加值之后的Json数组传过去就好了  
   //pass  
}) 

#19


你每个生成出来的菜单name貌似都叫的一样啊,Request.Form就取不到了

#20


首先,动态生成标签,必须是放在表单里面,
这样表单才能把数据提交回去。
其次,动态生成的标签,id和name要注意别重复
最后,提交时要看清楚,不要提交错了表单。。。。。。

#21


服务器按钮回发了,所以没东西了

#22


结帖了,用自己的方法解决了

#23


引用 22 楼 loveshrimp423 的回复:
结帖了,用自己的方法解决了


你是怎么解决的呢?