1.定义一个实体变量
var ticket = {TicketNo:$("#TicketNo").val(),
SeatNo: $("#SeatNo").val()};
2.读取页面上已经选中的数据项(数据绑定的checkbox上)
var getData = function () {
var rows = document.getElementById("RepeaterName").rows;
var row, i;
var datas = [];
for (i = 1; row = rows[i]; i++) {
var chk = row.cells[0].getElementsByTagName("INPUT")[0];
var TicketNo = row.cells[0].getElementsByTagName("INPUT")[1];
var SeatNo = row.cells[0].getElementsByTagName("INPUT")[2];
if (chk.checked) {
var data = {
TicketNo: TicketNo.value,
TicketNo: SeatNo.value,
};
datas.push(data);
}
}
return datas;
}
3..将页面选中的数据实体转化成JSON格式,再将该字符串存到页面的隐藏域中,后台读到此字符串再返序列化一下即可
Js 代码:
var datas = getData(); var str="[";
for (var data in datas) {str+="{TicketNo:"+data.TicketNo+",SeatNo:"+data.SeatNo+"}"}
str += "]";
$("#HiddenFieldName").val(str);
.cs代码:
var jsonStr = this.HiddenFieldName.Value;
var jsSerial = new JavaScriptSerializer();
var tickets = jsSerial.Deserialize<List<Entity>>(jsonStr);
4.判断新写入的这一行数据跟已有的数据是否存在冲突
//保存當前行數據
function Save(obj) {
var tickets = $("#RepeaterName tr").not($(obj).parents("tr")).map(function () {
var tno= $(this).find("#TicketNo");
var sno=$(this).find("#SeatNo");
if (tno.length>0&&tno.val()!=""&&sno.length>0&&sno.val()!="") {
return $.trim(tno.val()) +"-"+ $.trim(sno.val())+"~";
}
}).get().join(",");//将本行数据以外的数据主键按照一定格式串成字符串,然后比较本行数据是否在这个字符串中
if (tickets.indexOf($.trim(ticket.TicketNo) + "-" + $.trim(ticket.SeatNo) + "~") >=0) alert("票號+座號 不可重複!")
else ....//保存数据的代码
}