2016-04-25 88 views
0

我有一個頁面,我綁定grdiview從服務器頁面加載第一次時,但後來我做客戶端工作,通過添加/刪除客戶端行中的數據的網格過濾。 。 這裏是代碼爲通過jquery發送gridview數據到另一頁通過jquery

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); 
       }); 

      } 

所以上面的代碼添加/移除網格行客戶端。 現在我想將網格數據作爲datatable傳遞到另一個頁面。

所以我這樣做的服務器端我的意思是點擊按鈕將gridview數據轉換爲數據庫,網格顯示所有數據。

作爲第一次網格綁定從服務器端..在viewstate其具有所有數據,但之後,我在做客戶端操作。

因此,當我檢查服務器上的gridview行時,它顯示第一次加載的所有行。

現在該如何解決這個問題?

回答

0

一般來說,您不能將行添加到客戶端的渲染GridView上。

一方面它是一個安全問題,aspx頁面將默認,設置@Page directive EnableEventValidation="true" ValidateRequest="true"「減少未經授權的回發請求和回調的風險」

GridView的並不意在以這種方式進行更新。

GridView是一個數據綁定控件。更新GridView的唯一正確方法是更改​​後備數據存儲,然後重新綁定GridView。

這意味着您必須使用GridView的內部編輯功能,這通常意味着一次添加一行數據。

或者你必須實現一個基於jQuery/js並且完全獨立於GridView的客戶端數據輸入系統。將該數據發回服務器,更新GridView數據存儲並重新綁定GridView。