我有一个页面,当我第一次加载页面时,我从服务器绑定grdiview,但后来我做了客户端工作,通过添加/删除客户端的行来过滤网格数据。 这是
的代码function onSuccess(response) {
// debugger;
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var customers = xml.find("ListOfComplaints");
var appendline = '<tr align="center" style="color:#333333;background-color:#F7F6F3;">' +
' <td align="center"></td>' +
' <td align="center">7</td>' +
' <td align="center">Feb 29, 2016</td>' +
' <td align="center">1000</td>' +
' <td align="center">CompanyName</td>' +
' <td align="center">high discharge pressure</td>' +
' <td align="center">high discharge pressure</td>' +
' </tr>';
if (customers.length > 0) { //If Data Found
$('[id*=grdlead]').show();
$('#tblmessage').hide();
$("[id*=grdlead] tbody tr").has('td').remove(); //remove all data rows
$("[id*=grdlead] tbody").append(appendline); //append default row
} else {
$('[id*=grdlead]').hide();
$('#tblmessage').show();
}
var row = $("[id*=grdlead] tr:last-child").clone(true);
$("[id*=grdlead] tr").not($("[id*=grdlead] tr:first-child")).remove();
$.each(customers, function () {
// debugger;
var customer = $(this);
//$("td a:first", row).attr('href', 'ComplaintDetails.aspx?id=' + $(this).find("Id").text() + '&hideall=true&cid=' + $(this).find("ProjectId").text());
$("td", row).eq(0).html($(this).find("CustomerName").text());
$("td", row).eq(1).html($(this).find("EquipModelNo").text());
$("td", row).eq(2).html($(this).find("ProjectNo").text());
$("td", row).eq(3).html($(this).find("ContractType").text());
$("td", row).eq(4).html($(this).find("NoOfDays").text());
$("td", row).eq(5).html($(this).find("ExpenAmount").text());
$("td", row).eq(6).html($(this).find("ExpenDateFormatted").text());
$("[id*=grdlead]").append(row);
row = $("[id*=grdlead] tr:last-child").clone(true);
});
}
所以上面的代码是添加/删除网格行客户端。 现在我想将网格数据作为数据表传递给另一个页面。
所以我通过服务器端这样做我的意思是点击按钮将gridview数据转换为数据库,网格显示所有数据。
第一次Grid从服务器端绑定..在viewstate中,它拥有所有数据,但之后我在客户端进行操作。
因此,当我检查服务器上的gridview行时,它会显示第一次加载的所有行。
现在如何解决这个问题?
答案 0 :(得分:0)
一般来说,您无法在客户端向呈现的GridView添加行。
首先,它是一个安全问题,默认情况下,aspx页面会将@Page directive EnableEventValidation="true" ValidateRequest="true"
设置为&#34;降低未经授权的回发请求和回调的风险&#34;
GridViews不打算以这种方式更新。
GridView是一种数据绑定控件。更新GridView的唯一正确方法是更改后备数据存储,然后重新绑定GridView。
这意味着您必须使用GridView的内部编辑功能,这通常意味着一次添加一行数据。
或者您必须实现基于jquery / js的客户端数据输入系统,并且与GridView完全分离。将该数据发布回服务器,更新GridView数据存储并重新绑定GridView。