[英]How to insert HTML table data into SQL Server in a single batch by using jquery ajax and structured parameter with ASP.NET MVC controller
如何为这个 ajax function 和 Z9778840A0100CB30C52ZB7 服务器存储过程制作 controller 操作方法:76410CB30C52ZB7
<script type="text/javascript">
// event to fire on Save button click //
$(document).on('click', '#btnSave', function () {
var data = HTMLtbl.getData($('#example-1'));
var parameters = {};
parameters.array = data;
var request = $.ajax({
async: true,
cache: false,
dataType: "json",
type: "POST",
traditional: true,
contentType: "application/json; charset=utf-8",
url: "/index/SaveData",
data: JSON.stringify(parameters)
});
});
Function 将 HTML 表转换为锯齿状数组以及如何在 controller 中生成操作结果
var HTMLtbl =
{
getData: function (table) {
var data = [];
table.find('tr').not(':first').each(function (rowIndex, r) {
var cols = [];
$(this).find('td').each(function (colIndex, c) {
cols.push($(this).text().trim()); // get td Value
});
data.push(cols);
});
return data;
}
}
</script>
在 aspx web 表单中,我使它与 webmethod 一起使用:
public static string SaveData(string[][] array)
{
string result = string.Empty;
try
{
DataTable dt = new DataTable();
dt.Columns.Add("Month");
dt.Columns.Add("Week");
dt.Columns.Add("Area");
foreach (var arr in array)
{
DataRow dr = dt.NewRow();
dr["Month"] = arr[0];
dr["Week"] = arr[1];
dr["Area"] = arr[2];
dt.Rows.Add(dr);
}
}
然后我使用 SQL 服务器存储过程一次插入:
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_one";
cmd.Connection = cnn;
cmd.Parameters.Add("@TableType", SqlDbType.Structured).SqlValue = dt;
result = cmd.ExecuteNonQuery().ToString();
现在我得到 Request failed: parsererror 与此代码:
[HttpPost]
public JsonResult SaveData(string array)
{
using (MY_DB_1Entities dc = new MY_DB_1Entities())
{
if (array != null && array != "")
{
//Edit
Employee emp = JsonConvert.DeserializeObject<Employee>(array);
dc.Employees.Add(emp);
dc.SaveChanges();
}
}
return Json(false, JsonRequestBehavior.DenyGet);
}
当我从 ajax 关闭数据类型:json 时,我得到行保存未定义
由于您要发送JSON
字符串,只需将其parse/deserialize
化到您的 POCO object 中并保存即可。
[HttpPost]
public JsonResult SaveData(string json){ //take the JSON string
dynamic myTableData = JObject.Parse(json); // parse it or de-serialize it into your VM / POCO, or just use the dynamic myTableData above
...
//var temp = myTableData.prop1;
return Json(false, JsonRequestBehavior.AllowGet);
}
然后将其保存到您的数据库中。rest 是直截了当的。
根据附加问题更新:
获取您的类型信息并使用实体框架工作,然后保存
Employee emp = JsonConvert.DeserializeObject<Employee>(jsonString);
db.Employees.Add(emp);
db.SaveChanges();
这将保存它,你就完成了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.