2017-04-03 88 views
0

我的庫存應用程序中有一個GridView ...我正在使用該網格視圖產品出...其工作正常,但我想要檢查的東西是檢查如果同樣的供應商的相同產品在gridview中被選中多次,就像我在圖片中所做的那樣,那麼總和其數量以確保它小於其庫存。 對於單一產品將只與它的股票進行比較,但對於每一個重複的產品,將被添加量的值,並將其與股票比較.. 任何幫助將高度讚賞... enter image description hereGridview中重複DropDownList選擇項的行的總和值

如電腦區域的鍵盤被選中兩次,它有一個股票15 ...我想總結數量10 + 7 = 17,並拋出一條消息,如果它大於它的股票是15,否則將其保存爲一行... 並且計算機區域的筆被選擇了兩次(它可以是三次或更多)並且其具有50 ...數量10 + 60 = 70的股票,並且如果它大於它的股票是50,則投擲消息...

回答

0

你可以在Ro上做到這一點wDataBound的gridview很容易。

只需要獲取數量,庫存,產品和供應商。但是你也可以通過下面的函數來做到這一點,它會給你的記錄,如果在gridview中有重複的東西。

public void HighlightDuplicate(GridView gridview) 
{ 
    for(int currentRow = 0; currentRow < gridview.Rows.Count - 1; currentRow++) 
    { 
     GridViewRow rowToCompare = gridview.Rows[currentRow]; 
     for (int otherRow = currentRow + 1; otherRow < gridview.Rows.Count; otherRow++) 
     { 
      GridViewRow row = gridview.Rows[otherRow]; 
      bool duplicateRow = true; 
      //example: check Duplicate on column vendor(cell#0) and product(cell#1) 
      if ((rowToCompare.Cells[0].Text) != (row.Cells[0].Text) && (rowToCompare.Cells[1].Text) != (row.Cells[1].Text)) 
      { 
       duplicateRow = false; 
      } 
      else if (duplicateRow) 
      { 
       rowToCompare.Cells[1].Text = Convert.ToInt32(row.Cells[1].Text) + Convert.ToInt32(rowToCompare.Cells[1].Text); 
row.Visible=false; 
      } 
     } 
    } 
} 

在此功能中,您可以檢查我們是在比較行和裏面我們有電池,並檢查電池值。

if ((rowToCompare.Cells[0].Text) != (row.Cells[0].Text) && (rowToCompare.Cells[1].Text) != (row.Cells[1].Text)) 
     { 
      duplicateRow = false; 
     } 
     else if (duplicateRow) 
     { 
      rowToCompare.Cells[1].Text = Convert.ToInt32(row.Cells[1].Text) + Convert.ToInt32(rowToCompare.Cells[1].Text); 
row.Visible=false; 
     } 

在本部分中,我們比較單元索引0和1,如果相同意味着我們有供應商和產品相同,這些不應該相同。如果供應商和產品是相同的,那麼他們的價值和設置只有一行,第二行我設置可見虛假,你可以執行一些其他操作,如果你想,也可以在添加兩個行值後檢查,如果數量更大或減少,你可以做任何相應的操作。 你可以在DataBind()之後調用這個函數。例如,如果GridView的ID是Gridview1則:

HighlightDuplicate(this.GridView1); 
1

你可以使用JavaScript或者jQuery來計算同一產品的總量,然後將其與該產品的現有庫存進行比較。 followling示例使用jQuery。

要進行計算,首先應爲網格中的所有項目指定名稱或類別。示例行應該看起來像這樣。

<tr> 
    <td class="no">XX</td> 
    <td><select class="vendor" >... </select></td> 
    <td><select class="product" >...</select></td> 
    <td><input class="stock" value="YY" readonly="true"></td> 
    <td><input class="quantity" value="ZZ"></td> 
</tr> 

然後你的項目的變化事件添加處理程序數量

$('.quantity').change(function(e){ 
    var quantity = $(this); 
    var row = quantity.closest("tr"); 
    var selectedVendor = $(".vendor option:selected", row).val(); 
    var selectedProduct = $(".product option:selected", row).val(); 

    // Get all row that have the same vendor and product 
    var sameRows = $(".product option:selected[value='" + selectedProduct + "']", $(".vendor option:selected[value='" + selectedVendor + "']").closest("tr")).closest("tr"); 

    // Calculate total quantity of same product 
    var total = 0; 
    sameRows.each(function() { 
     total += parseInt($(".quantity", this).val()); 
    }); 

    // Compare total quantity and stock 
    var stock = parseInt($(".stock", row).val()); 
    if (total > stock) { 
     alert("Quantity access available stock"); 
     quantity.focus(); 
    } 
}); 

你也應該考慮增加類似的處理程序下拉供應商產品

我創建了一個演示here,你可以檢查。