form表单有多条数据,行是动态添加的,怎么用saveall批量插入数据库

 我来答
在晴天的雨伞
2016-06-07 · TA获得超过6869个赞
知道大有可为答主
回答量:5761
采纳率:86%
帮助的人:1231万
展开全部
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="js/Jquery1.7.js"></script>
<script src="js/MyAdd.js"></script>
<link href="css/MyPages.css" rel="stylesheet" />
</head>
<body>
<div >
<div id="divInsert">
<div id="divBtn">
<input id="btnDelete" type="button" value="删除行" />
<input id="btnData" type="button" value="插入行" />
<input id="btnInsert" type="button" value="添加行" />
</div>
</div>
<table id="tab" cellpadding="0" cellspacing="0">
<tr>
<td rowspan="2">姓名</td>
<td rowspan="2">年龄</td>
<td colspan="2">血压</td>
</tr>
<tr>
<td>高压</td>
<td>低压</td>
</tr>
</table>
</div>
<div id="mydiv"></div>
</body>
</html>
JS文档
/// <reference path="../WebService1.asmx" />
/// <reference path="../WebService1.asmx" />
$(function () {
//定义一个全局变量i,用来标识添加了几行
var row = 0;
var strValue = "";
//将一行添加到table中去
$('#btnInsert').click(function () {
row++;
//字符串拼接tr一行中的内容
var tr = "<tr>";
for (var i = 0; i < 3; i++) {
tr += "<td><input id='" + row + "text'" + i + "+' type='text' value=" + row +""+ i + " /></td>";
}
tr += "<td><input class='txt' id='" + i + "text4'+ type='text' value=" + row + "" + 4 + " /><input id='Checkbox1' class='ck' name='ckb' type='checkbox' /> </td></tr>";
$("#tab").append(tr);
})
//删除添加的行,先判断checkbox是否选中,然后删除
$('#btnDelete').click(function () {
$("input[name=ckb]:checked").each(function () { $(this).parent().parent().remove(); });
})
//将i遍历,判断是否存有值,如果有将数据插入数据库
$('#btnData').click(function () {
$('table input').each(function () {
strValue += $(this).val() + ",";
})
$.ajax({
type: 'post',
contentType: 'application/json',
url: "../WebService1.asmx/InsertInfo",
data: "{valuesStr:'" + strValue + "'}",
success: function (result) {
$('#mydiv').html(result.d);
}
})
})
})
CSS文档
table tr td{border:1px solid #eee;text-align:center;width:80px;}
#divInsert{width:100%;height:25px;}
#btnInsert{width:50px;height:25px;background-color:#eee;border-style:none;position:absolute;left:185px;}
#btnData{width:50px;height:25px;background-color:#eee;border-style:none;position:absolute;left:235px;}
#btnDelete{width:50px;height:25px;background-color:#eee;border-style:none;position:absolute;left:285px;}
input{width:70px;}
.txt{width:35px;float:left;position:relative;left:5px;}

.ck{width:10px;float:right;}

PersonInfo类文件
namespace ASPOilfiled
{
public class PersonInfo
{
public string Name { get; set; }
public int Age { get; set; }
public int Hblood { get; set; }
public int Lblood { get; set; }
}
}
WebService1.asmx 文件
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
public static string sqlstr = ConfigurationManager.ConnectionStrings["sqlstr"].ConnectionString;
[WebMethod]
public string InsertInfo(string valuesStr)
{
string result = "插入失败!";
string asd = valuesStr.Replace("on,", "");
string[] str2 = System.Text.RegularExpressions.Regex.Split(asd, ",");
//for (int i = 0; i < str2.Length; i++)
//{
// result += str2[i] + "<br/>";
//}
for (int i = 0; i < str2.Length; i++)
{
PersonInfo info;
if (i % 4 == 0)
{
info = new PersonInfo();
info.Name = str2[i];
info.Age = Convert.ToInt32(str2[i + 1]);
info.Hblood = Convert.ToInt32(str2[i + 2]);
info.Lblood = Convert.ToInt32(str2[i + 3]);
result = InfoToSql(info).ToString();
}
}
return result;
}
public int InfoToSql(PersonInfo info)
{
string instSql = "insert into PersonInfo values(@name,@age,@Hblood,@Lblood)";
SqlConnection con = new SqlConnection(sqlstr);
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = instSql;
cmd.Parameters.Add("@name", SqlDbType.VarChar, 32).Value = info.Name;
cmd.Parameters.Add("@age", SqlDbType.Int).Value = info.Age;
cmd.Parameters.Add("@Hblood", SqlDbType.Int).Value = info.Hblood;
cmd.Parameters.Add("@Lblood", SqlDbType.Int).Value = info.Lblood;
int i = cmd.ExecuteNonQuery();
cmd.Dispose();
con.Dispose();
return i;
}
}
追问
框架定义的有个saveall方法,我的前端是先写一行tr后面动态添加是复制第一行的name是一样的
saveAll方法的参数是(iterableentities)类型
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式