0

In JavaScript versteckten Feld Wert gespeichert ist.versteckten Feld Wert speichern und zeigen sie auf der nächsten Seite in mvc

Wenn Sie jedoch auf die nächste Seite klicken, ist das ausgeblendete Feld null, es enthält keine Werte von der vorherigen Seite.

Warum werden vorherige Werte auf der nächsten Seite nicht geladen?

Wie den vorherigen Wert in versteckten Feld laden?

function AddRemoveCustomer(id) { 
    //$(".checkBoxClass").click(function (e) { 
    alert('in main function'); 
    alert(id); 

    var CustomerIDArray = []; 
    var hidCID = document.getElementById("hfCustomerID"); 
    if (hidCID != null && hidCID != 'undefined') { 
    var CustID = hidCID.value; 
    CustomerIDArray = CustID.split("|"); 
    var currentCheckboxValue = id; 
    var index = CustomerIDArray.indexOf(currentCheckboxValue); 
    alert('index value:' + index); 
    debugger; 
    if (index == 0) { 
     alert('if'); 
     CustomerIDArray.push(currentCheckboxValue); 
     alert('pushed value:' + CustomerIDArray); 
    } else { 
     alert('else'); 
     var a = CustomerIDArray.splice(index, 1); 
     alert("a" + a); 

    } 
    hidCID.value = CustomerIDArray.join("|"); 
    alert('Final' + hidCID.value); 

    } else { 
    alert('undefined'); 
    } 
    //}); 
} 
<table id="tblEmailScheduler" class="table-bordered col-offset-12"> 
    <thead> 
    <tr class="label-primary"> 
     <th style="padding:5px 15px;"> 
     First Name 
     </th> 
     <th style="padding:5px 15px;"> 
     Last Name 
     </th> 
     <th style="padding:5px 15px;"> 
     Email ID 
     </th> 
     <th style="padding:5px 15px;"> 
     Customer Type 
     </th> 
     <th style="padding:5px 15px;"> 
     Customer Designation @Html.DropDownList("CustomerDesignation", new SelectList(ViewBag.SelectAllCustomerDesignationDDL, "Value", "Text"), new { id = "CustomerDesignationDDL" , name = "CustomerDesignationDDL" }) 
     </th> 
     <th style="padding:5px 15px;"> 
     Select All 
     <div class="checkbox control-group"> 
      <label><input type="checkbox" id="cbSelectAll" /></label> 
     </div> 
     </th> 

    </tr> 
    </thead> 
    <tfoot> 
    <tr> 
     <th colspan="2"> 
     EmailTemplate : @Html.DropDownList("EmailSubject", new SelectList(ViewBag.SelectAllEmailTemplateDDL, "Value", "Text"), new { id = "SelectAllEmailTemplateDDL" }) 
     </th> 
     <th colspan="2"> 
     Set Date And Time: 
     <input type="text" class="from-date-picker" readonly="readonly" /> 
     </th> 
     <th colspan="2"> 
     <input type="submit" value="Schedule" id="btnSubmit" class="btn btn-default" /> 
     </th> 
     <td> 

     </td> 
    </tr> 
    </tfoot> 
    @foreach (var item in Model) { 
    <tr style="text-align:center"> 
    <td id="tblFirstName"> 
     @item.FirstName 
    </td> 
    <td id="tblLastName"> 
     @item.LastName 
    </td> 
    <td id="tblEmailID"> 
     @item.EmailID 
    </td> 
    <td id="tblCustomerType"> 
     @item.CustomerType 
    </td> 
    <td id="tblCustomerDesignation"> 
     @item.CustomerDesignation 
    </td> 
    <td> 
     <div class="checkbox control-group"> 
     <label><input type="checkbox" id="@item.CustomerID" value="@item.CustomerID" 
     onclick="AddRemoveCustomer(@item.CustomerID)" class="checkBoxClass"/> 
     @*@Html.CheckBox("Select", new { id = "cbCustomer", item.CustomerID})*@</label> 
     </div> 
    </td> 
    </tr> 
    } 
</table> 
<input type="hidden" id="hfCustomerID" /> 

Antwort

0

In an Ihrem Code suchen, bemerkte ich ein Problem, das Sie das Problem verursachen können Sie angeben:

var index = CustomerIDArray.indexOf(currentCheckboxValue); 

Sie dann Index verwenden, um zu entscheiden, ob die Id in ist das Array, indem sie diese:

if (index == 0) { 

sollte es sein

if (index == -1) {

als -1 angegeben nicht gefunden. Mit ihm, wie es derzeit ist, wäre es diese Linie getroffen:

var a = CustomerIDArray.splice(index, 1); 

und versuchen, einen negativen Index Spleiß, der rückwärts vom Ende des Strings geht, die zu unerwarteten Ergebnissen führen würde.

0

Ihr verstecktes Feld hfCustomerID wird immer als leeres Feld an den Browser gerendert, weil Sie es in Ihrem Model nicht gebunden haben.

Ich nehme an, diese Tabelle befindet sich in einem Formular, das auf Ihrem Controller veröffentlicht wird? Wenn ja, können Sie Ihrem Modell ein neues Feld hinzufügen und dann verwenden, um ein verborgenes Eingabefeld zu rendern, das an dieses Element in Ihrem Modell gebunden ist.

Alternativ sieht es so aus, als ob dieses Feld vollständig anhand der angekreuzten Kontrollkästchen berechnet wird? In diesem Fall aktualisieren Sie Ihre Ansicht, um den Wert des ausgeblendeten Felds festzulegen (dies wird jedoch einige Logik aus Ihrem JavaScript duplizieren).

+0

Können Sie ein Beispiel geben? –

+0

@ShridharSalunkhe Wenn Sie die Frage aktualisieren, um die gesamte .cshtml-Ansicht und Ihren Controller-Code anzuzeigen, kann ich Ihnen leichter zeigen, was ich meine. –

+0

Wenn in dieser Tabelle das Kontrollkästchen aktiviert ist, wird der Wert des aktivierten Kontrollkästchens mithilfe von JavaScript im ausgeblendeten Feld gespeichert. Ich benutzte mvcpaging nugget-Paket für pagination.so, wenn ich Wert prüfte, dann speicherte es in versteckten Feld, als ich zur nächsten Seite gehe, ist verstecktes Feld leer. Ich möchte den Wert der vorherigen Seite abrufen und einen neuen überprüften Wert in das ausgeblendete Feld einfügen. –

Verwandte Themen