2015-07-03 31 views
0

我有一個gridview和場景是:一旦有人刪除一行,它會檢查NOTIF_RECIP_SEQ_NBR是否最大。如果是,那麼它刪除那一行,否則給一個彈出。迭代GridView使用Javascript或jQuery查找最大值

所以基本上一旦有人點擊刪除,它會得到該行的NOtif_recip_Id並遍歷Gridview,查看與該NOTIF_RECIP_ID對應的任何行的NOTIF_RECIP_SEQ_NBR是否更大。

問題是否可以在客戶端?我在服務器端做過,但當我擁有客戶端的所有數據時,我認爲這不是一個好方法。

請幫忙。我用Javascript嘗試了多種方式,但沒有用。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<script type="text/javascript"> 

    function check(var a ,var b) 
    { 

     var grid = document.getElementById("GridView1"); 
     var cellPivot; 
     debugger; 
     if (grid.rows.length > 0) { 
      for (i = 1; i < grid.rows.length-1; i++) 
      { 

//here I want code to iterate and compare value.Is it possible? 
      alert("You must select an answer for all columns if Pivot is yes") 
      } 

    } 

</script> 
</head> 

<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> 
<table> 

<tr> 
<td> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
        <asp:Label ID="Label13" runat="server" Text="Notif_Recip Data" BackColor="Azure"></asp:Label> 
<asp:GridView ID="GridView1" runat="server" DataKeyNames="NOTIF_RECIP_GUID" emptydatatext="There are no data records to display." 
AutoGenerateColumns = "false" Font-Names = "Arial" 
Font-Size = "11pt" AlternatingRowStyle-BackColor="Beige" 
HeaderStyle-BackColor = "AppWorkspace" 
PageSize = "10" > 
<Columns> 

<asp:TemplateField ItemStyle-Width = "30px" HeaderText = "NOTIF_RECIP_ID"> 
    <ItemTemplate> 
     <asp:Label ID="lblNOTIF_RECIP_ID" runat="server" 
     Text='<%# Eval("NOTIF_RECIP_ID")%>'></asp:Label> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:TextBox ID="txtNOTIF_RECIP_ID" runat="server" 
      Text='<%# Eval("NOTIF_RECIP_ID")%>'></asp:TextBox> 
      <asp:RequiredFieldValidator ID="v1txtNOTIF_RECIP_ID" runat="server" ControlToValidate="txtNOTIF_RECIP_ID" Text="?" ForeColor="Red" /> 
    </EditItemTemplate> 

</asp:TemplateField> 
<asp:TemplateField ItemStyle-Width = "100px" HeaderText = "NOTIF_RECIP_SEQ_NBR"> 
    <ItemTemplate> 


     <asp:Label ID="lblNOTIF_RECIP_SEQ_NBR" runat="server" 
       Text='<%# Eval("NOTIF_RECIP_SEQ_NBR")%>'></asp:Label> 
    </ItemTemplate> 

</asp:TemplateField> 

<asp:TemplateField> 
    <ItemTemplate> 


    <asp:LinkButton ID="lnkRemove" runat="server" 
      CommandArgument = '<%# Eval("NOTIF_RECIP_GUID")%>' 
     OnClientClick = "ValidateGrid" 
     Text = "Delete" OnClick = <%# "javascript:check('" + Eval("NOTIF_RECIP_SEQ_NBR")" + "Eval("NOTIF_RECIP_ID") + "')" %> ></asp:LinkButton> 

    </ItemTemplate> 


</asp:TemplateField> 
<asp:CommandField ShowEditButton="True" /> 
</Columns> 
<HeaderStyle Font-Bold="True" /> 

<AlternatingRowStyle BackColor="#C2D69B" /> 
</asp:GridView> 
</ContentTemplate> 
<Triggers> 
<asp:AsyncPostBackTrigger ControlID = "GridView1" /> 
</Triggers> 
</asp:UpdatePanel> 
</td> 
</tr> 

</table> 
</div> 
</form> 
</body> 
</html> 

回答

0

我發現解決方案如此粘貼任何需要的人。

<script type = "text/javascript"> 
     function GetSelectedRow(lnk) { 
     debugger; 
      var table, tbody, i, rowLen, row, j, colLen, cell; 

      var result = confirm('Do you want to delete this value ?'); 
      if (result) { 

       var x = document.getElementById('Label100'); 


       table = document.getElementById("GridView1"); 
       tbody = table.tBodies[0]; 

       var bool = true; 
       var row = lnk.parentNode.parentNode; 
       var rowIndex = row.rowIndex - 1; 

       var RecipID = row.cells[0].innerText; 
       var Sqqno = parseInt(row.cells[1].innerText); 

       for (i = 1, rowLen = tbody.rows.length; i < rowLen; i++) { 
        row = tbody.rows[i]; 

        var newrecipId = row.cells[0].innerText; 
        if (newrecipId == RecipID) { 
         cell = row.cells[1]; 

         var newseq = parseInt(row.cells[1].innerText); 
         if (Sqqno < newseq) { 
          // debugger; 
          bool = false; 
          x = document.getElementById('Label100'); 
          x.innerHTML = "ERROR-Delete RecipId with max Seqnumber"; 
          x.style.display = "block"; 

          return bool; 
          break; 
         } 

        } 
        else { 
         bool = true; 
        } 

       } 

       return bool; 
      } 
      else { 
       return false; 
      } 

     } 
    </script>