ASP.NET 如何在Onclick方法中将table中的数据全部插入到数据库的一张表中
问题描述:
table里的数据是用js 按添加按钮一次一次添加进去的,所以table的行数随机,列数只有两列。
效果如下
请问如何 按一个按钮后 在后台一次性把前端的显示数据插入数据库sql server里呢?
能不能给一段具体代码!!!!
答
把table放在表单里,然后表单序列化,提交,后天接收。
答
建立一个实体, 将数据放进ILIST,然后循环将ILIST更新到数据库中,
答
多种方式可以实现,如果是webform的话,可以直接使用服务器端onserverclick,表中的数据通过前端js将其放入一个server级别的输入框里,在onserverclick对应的后台处理方法,可以操作该书入库的内容;
也可以直接用ajax,js将表中数据逐条封装为数组,通过ajax向后台提交,json、字符串等格式均可。
答
序列化生成json ,调用事先封装好的方法就行了
答
<script src="https://cdn.bootcss.com/jquery/1.7.1/jquery.min.js"></script>
货品名:<input type="text" id="text1" /> 数量:<input type="text" id="text2" /><input type="button" value="添加" /><br />
<table id="table" border="1"><tr><td>货品名</td><td>数量</td></tr></table>
<br /><a onclick="save()">保存</a>
<script>
$(function () {
$(':button').click(function (e) {
var text1 = $('#text1').val();
var text2 = $('#text2').val();
$('#table').append('<tr><td>' + text1 + '</td>><td>' + text2 + '</td></tr>')
})
});
function save() {
var data = $('#table tr:gt(0)').map(function () {
//如果输入内容存在英文状态下|则替换为全角状态下的|
return $('td', this).map(function () { return this.innerHTML.replace(/\|/g,'|')}).get().join('|');//每组用英文状态下|分隔
}).get().join('\n');//每行数据用换行符隔开
if (!data) { alert('先添加数据!'); return }
$.ajax({
type: 'POST', url: 'xxxxx.aspx', data: { data: data, op: 'save' }, complete: function (xhr) {
var s = xhr.responseText;
if (s == '1') alert('保存成功')
else alert(s)
}
})
}
</script>
xxxxx.aspx
protected void Page_Load(object sender, EventArgs args)
{
if (Request.Form["op"] == "save")
{
string data = Request.Form["data"],sql="";
if (string.IsNullOrEmpty(data))
{
string[] arr = data.Split('\n'),item;
foreach (string s in arr)
{
item = s.Split('|');
if (item.Length < 2) continue;
sql += "insert into xxxtable(name,num)values('" + item[0] + "'," + item[1] + ")";
}
if (sql != "")
{ //执行sql语句,不用我多少了吧。。。
Response.Write("1");//成功输出1
}
else Response.Write("数据错误...");
}
Response.End();
}
}