2016-12-28 6 views
0

偶数.... MVCのC#を飛ばしている自動カウントは私が私の見解では、コードを持っている私の見解では

ビュー:

<div id="batch_payments"> 
     @foreach (var batchPayment in Model.BatchPayments) 
     { 
      if(batchPayment.CustomerIdEntered != null) 
      { 
       Html.RenderPartial("BatchPaymentAdd", batchPayment); 
      } 
     } 
    </div> 

部分図:

<span class="batch_payment_index white">@String.Format("{0}.", Model.BatchPaymentIndex)</span> 

モデル:

public class BatchPaymentViewModel : BaseViewModel 
{ 
    public int BatchPaymentId { get; set; } 
    public string BatchTypeId { get; set; } 
    public int BatchPaymentIndex { get; set; } 
    public decimal? Amount { get; set; } 
    public string CustomerIdEntered { get; set; } 
    public string RoutingNumber { get; set; } 
    public string AccountNumber { get; set; } 
    public string CheckNumber { get; set; } 
    public string CreditCardNumber { get; set; } 
    public string ReceiptNumber { get; set; } 
    public ICollection<BatchPaymentSplitViewModel> PaymentSplits { get; set; } 
    private bool _isBatchEditable; 
    public bool IsBatchEditable { get {return _isBatchEditable; } set { UpdateIsBatchEditable(value); } } 
    public bool IsThisEditable { get; set; } 
    public string Status { get; set; } 

    public BatchPaymentViewModel() 
    { 
     PaymentSplits = new List<BatchPaymentSplitViewModel>(); 
     PaymentSplits.Add(new BatchPaymentSplitViewModel()); 
     BatchPaymentIndex = 0; 
     IsBatchEditable = true; 
     IsThisEditable = true; 
     Status = "Unknown"; 
    } 
    public BatchPaymentViewModel(int index) 
    { 
     PaymentSplits = new List<BatchPaymentSplitViewModel>(); 
     PaymentSplits.Add(new BatchPaymentSplitViewModel()); 
     BatchPaymentIndex = index; 
     IsBatchEditable = true; 
     IsThisEditable = true; 
     Status = "Unknown"; 
    } 
    public BatchPaymentViewModel(BatchPayment batchPayment, int index = 0) 
    { 
     BatchPaymentId = batchPayment.BatchPaymentId; 
     BatchTypeId = batchPayment.Batch.BatchTypeId; 
     BatchPaymentIndex = index; 
     Amount = batchPayment.BatchPaymentSplits.Select(i => i.Amount).First(); 
     CustomerIdEntered = batchPayment.BatchPaymentSplits.Select(i => i.CustomerIdEntered).First(); 
     RoutingNumber = batchPayment.RoutingNumber; 
     AccountNumber = batchPayment.AccountNumber; 
     CheckNumber = batchPayment.CheckNumber; 
     CreditCardNumber = batchPayment.CreditCardNumber; 
     ReceiptNumber = batchPayment.UniqueId; 
     Status = batchPayment.BatchPaymentStatus.Text; 
     PaymentSplits = new List<BatchPaymentSplitViewModel>(); 
     foreach (var split in batchPayment.BatchPaymentSplits.OrderBy(bp => bp.BatchPaymentId)) 
     { 
      PaymentSplits.Add(new BatchPaymentSplitViewModel(split)); 
     } 
     if (PaymentSplits.Count == 0) 
     { 
      PaymentSplits.Add(new BatchPaymentSplitViewModel()); 
     } 
     IsBatchEditable = batchPayment.Batch.IsEditable; 
     IsThisEditable = batchPayment.IsEditable; 
    } 

これは私のビューに表示されている行に数値を追加することです。しかし、私はいくつかの行が隠されています。これらの数値はまだカウントされているので、私の行は1,3,5,7などと表示されます。

編集:私のビューでIf文を削除すると、正しくカウントされます。それではまだ適用されていない行を数えています。

がどのように私はこのコードは非表示の行を無視してカウントするのですか1,2,3,4などすべてのコードがModel.BatchPaymentIndexに何が保存されていると表示されるん

+0

オブジェクトにブーリアンIsHiddenを追加できましたか?次に、隠されていないアイテムを取得しますか? –

+0

このコード行を囲むコードを追加してください。ループのように。 – DarkKnight

+0

ここで 'Model.BatchPaymentIndex'をインクリメントしていますか? –

答えて

0

- あなたはあなたのモデルを手直しする必要がありますし、 BatchPaymentDisplayIndexのようなものを追加して、行が表示されて非表示になっているときにこれらの数値を修正してください。

モデルのコードが表示されていないと、それ以上の助けはありません。

0

ありがとうございます。あなたの助言は索引コードにつながり、他の人が書いたので、私はそれを探していませんでした。解決策が出てきました

if (batchPayment.BatchPaymentSplits.Select(i => i.CustomerIdEntered).First() != null) 
{ 
    BatchPaymentIndex = (index + 1)/2; 
} 
else 
{ 
    BatchPaymentIndex = index; 
} 
関連する問題