2016-04-25 10 views
0

Ich habe eine Seite, wo ich grdiview vom Server binden, wenn Seite zum ersten Mal geladen wird, aber dann habe ich clientseitige Arbeit zum Filtern von Daten des Rasters durch Hinzufügen/Löschen von Zeilen von Client-Seite. . und hier ist der Code für die Rasterzeilen Client-SeiteSenden Sie Gridview-Daten auf eine andere Seite durch 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); 
       }); 

      } 

ist also oben Code hinzufügen/entfernen. Jetzt möchte ich Rasterdaten als Datentabelle auf eine andere Seite übergeben.

Also ich mache das auf der Server-Seite Ich meine beim Klicken auf die Schaltfläche zum Konvertieren von Gridview-Daten in die Datenbank, Raster zeigen alle Daten.

Wie das erste Mal Grid von der Serverseite binden .. auf in Viewstate hat es alle Daten, aber danach mache ich Operationen auf der Clientseite.

Also, wenn ich gridview Zeilen auf Server überprüfen, zeigt es alle Zeilen, die zum ersten Mal geladen wurden.

Jetzt, wie löst man dieses Problem?

Antwort

0

Im Allgemeinen können Sie einem gerenderten GridView auf der Clientseite keine Zeilen hinzufügen.

Zum einen wird es ein Sicherheitsproblem und aspx Seiten in der Standardeinstellung die @Page directive EnableEventValidation="true" ValidateRequest="true" gesetzt

Gridviews auf diese Weise aktualisiert werden, sind nicht auf „das Risiko einer nicht autorisierten Postbacks Anfragen und Rückrufe zu reduzieren“ vorgesehen.

Ein GridView ist ein datengebundenes Steuerelement. Die einzige korrekte Möglichkeit, ein GridView zu aktualisieren, besteht darin, Änderungen am Sicherungsdatenspeicher vorzunehmen und das GridView erneut zu binden.

Das bedeutet, dass Sie entweder die internen Bearbeitungsfunktionen von GridView verwenden müssen, was normalerweise bedeutet, dass Sie jeweils eine Datenzeile hinzufügen.

Oder Sie müssen ein Client-seitiges Dateneingabesystem implementieren, das auf jquery/js basiert und vollständig von der GridView getrennt ist. Senden Sie diese Daten an den Server zurück, aktualisieren Sie den GridView-Datenspeicher, und binden Sie die GridView erneut.

Verwandte Themen