通过jquery将gridview数据发送到另一个页面

时间:2016-04-25 10:52:33

标签: javascript c# jquery asp.net gridview

我有一个页面,当我第一次加载页面时,我从服务器绑定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行时,它会显示第一次加载的所有行。

现在如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

一般来说,您无法在客户端向呈现的GridView添加行。

首先,它是一个安全问题,默认情况下,aspx页面会将@Page directive EnableEventValidation="true" ValidateRequest="true"设置为&#34;降低未经授权的回发请求和回调的风险&#34;

GridViews不打算以这种方式更新。

GridView是一种数据绑定控件。更新GridView的唯一正确方法是更改​​后备数据存储,然后重新绑定GridView。

这意味着您必须使用GridView的内部编辑功能,这通常意味着一次添加一行数据。

或者您必须实现基于jquery / js的客户端数据输入系统,并且与GridView完全分离。将该数据发布回服务器,更新GridView数据存储并重新绑定GridView。