如果您的目标是将表的数据发布到服务器,我通常将表的行转换为对象,并通过 ajax() 将数据作为 JSON 发布。您可以添加一个单击事件以在用户按下将触发回发或任何其他事件的按钮时自动触发此事件。
例子:
客户端
// Wire up posting the data to the server with a ASP.NET button
$('#<%= Save.ClientID %>').click(function (e) {
PostTable();
});
// Read a row
function GetRow(rowNum) {
var tableRow = $('#partTable tbody tr').eq(rowNum);
var row = {};
row.ChangeType = tableRow.find('td:eq(1)').text();
row.UpdateType = tableRow.find('td:eq(2)').text();
row.Part = tableRow.find('td:eq(5)').text();
row.Price = tableRow.find('td:eq(7)').text();
row.UOM = tableRow.find('td:eq(8)').text();
row.ApplyDate = tableRow.find('td:eq(9)').text();
row.Remarks = tableRow.find('td:eq(10)').text();
return row;
}
// Read all rows
function GetAllRows() {
var dataRows = [];
$('#partTable tbody tr').each(function (index, value) {
var currentRow = GetRow(index);
dataRows.push(currentRow);
});
return dataRows;
}
// POST rows to server
function PostTable() {
var crossId = getParameterByName('id');
var jsonRequest = { rows: GetAllRows(), crossId: crossId };
$.ajax({
type: 'POST',
url: 'TableProcessingViajQueryAjax.aspx/SaveRows',
data: JSON.stringify(jsonRequest),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (data, text) {
return true;
},
error:function (request, status, error){
return false;
}
服务器端
[WebMethod]
public static bool SaveRows(List<Row> rows, int crossId)
{
// Do something with your data, maybe put in session/cache/db/etc...
}
服务器端(对象必须匹配在 JS 中创建的对象)
public class Row
{
public string ChangeType { get; set; }
public string UpdateType { get; set; }
public string Part { get; set; }
public double Price { get; set; }
public int UOM { get; set; }
public DateTime ApplyDate { get; set; }
public string Remarks { get; set; }
}
** 我正在使用 JSON.ORG 的“stringify”将我的对象转换为有效的 JSON 对象。