2016-04-25 4 views
0

ページが最初に読み込まれたときにサーバからgrdiviewをバインドしているページがありますが、クライアントサイドから行を追加/削除することでグリッドのデータをフィルタリングするクライアントサイドの作業をしています。ここに。 とは、コードがグリッド行のクライアント側を追加/削除されるので、上記のことjqueryを使って別のページにgridviewデータを送る

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

      } 

のためのコードです。 グリッドデータを別のページにデータテーブルとして渡したいと思います。

私はそれをサーバー側で行うと、グリッドビューのデータをデータベースに変換するためのボタンをクリックすることを意味し、グリッドはすべてのデータを表示します。

グリッドはサーバーサイドからバインドされています。ビューステートでは、すべてのデータを保持していますが、その後はクライアント側で操作しています。

サーバーのグリッドビューの行をチェックすると、最初に読み込まれたすべての行が表示されます。

この問題を解決するにはどうすればよいですか?

答えて

0

一般に、クライアント側のレンダリングされたGridViewに行を追加することはできません。

一つには、それはセキュリティ上の問題だとのaspxページは、デフォルトでは、

GridViewsがこのように更新されることを意図していない「不正なポストバックリクエストとコールバックのリスクを減らす」ために@Page directive EnableEventValidation="true" ValidateRequest="true"を設定します。

GridViewはデータバインドコントロールです。 GridViewを更新する唯一の正しい方法は、バッキングデータストアを変更してGridViewを再バインドすることです。

つまり、GridViewの内部編集機能を使用する必要があります。これは通常、一度に1行のデータを追加することを意味します。

または、jquery/jsベースのGridViewとは完全に別のクライアント側のデータ入力システムを実装する必要があります。そのデータをサーバーにポストし、GridViewデータストアを更新し、GridViewを再バインドします。

関連する問題