2016-07-22 9 views
1

Ich frage mich, ob jemand mir mit einigen Ausrichtungsprobleme helfen könnte, die ich habe. Ich habe eine Teilansicht, die ich in einen Tisch legen möchte, während ich ihn durchlaufe.Ausrichtungsprobleme zwischen einer Ansicht und einer Teilansicht

Ich habe zwei Ansätze versucht

  1. Verwendung von zwei separaten Tabellen (eine in der Hauptansicht und eine in der Teilansicht).

  2. Legen Sie die Tabelle in der Hauptansicht und dann nur die Zeilen in der Teilansicht auf keinen Erfolg.

Ich bin auch zusätzliche Zeilenumbrüche immer zwischen jeder Schleife durch mein Modell (Dies ist der Hauptgrund, warum ich eine Tabelle verwenden mag, um zu versuchen, diese zusätzliche Leerzeilen zu stoppen.)

Ich habe aktualisiert was jetzt passiert, einschließlich der gemachten Vorschläge. Ich habe immer noch Probleme.

Das Problem tritt sehr spezifisch auf, wenn ich auf Add new klicke. Die neue Zeile wird nicht in die Tabelle aufgenommen, da die Tabelle bereits beim Laden der Seite erstellt wurde. Ist es möglich, die gesamte Tabelle zu aktualisieren, wenn die Teildatei aktualisiert wird? Das Problem ist der Header der Tabelle ist außerhalb der Teilansicht, so wird es nicht ständig wiederholt

Jede Hilfe würde dankbar geschätzt werden.

Bild

enter image description here

Hauptansicht:

<div id="editorRows"> 
    <div class="row text-center "> 
     @Html.ActionLink("Add New Line", "BlankEditorRow", null, new { id = "addItem", @class = "btn blue" }) 
     <input type="submit" value="Save Changes" class="btn blue" /> 
    </div> 

    <table class="table" style="border: none;" width="70"> 
     <tr> 
      <th>StockCode</th> 
      <th class="tg-031e">Description</th> 
      <th>Qty</th> 
      <th>Price</th> 
      <th>Net</th> 
      <th>Tax</th> 
      <th>Gross</th> 
      <th>Remove</th> 
     </tr> 
     <tr> 
      @if (Model.OrderLines != null) 
      { 
       foreach (var item in Model.OrderLines) 
       { 
        Html.RenderPartial("OrderLinesEditorRow", item); 
       } 
      } 
     </tr> 
    </table> 
</div> 

Teilansicht:

@using HtmlHelpers.BeginCollectionItem 
@model MyModel.Models.OrderLines 

<style> 
    input.Width { 
     width: 5em; 
    } 
</style> 

<div class="editorRow"> 
    <script> 
     $("a.deleteRow").live("click", function() { 
      $(this).parents("div.editorRow:first").remove(); 
      return false; 
     }); 

     $(document).ready(function() { 
      $('.selectpicker').selectpicker({ 
       liveSearch: true, 
       showSubtext: true 
      }); 
     }); 
    </script> 

    @using (Html.BeginCollectionItem("OrderLines")) 
    { 
     <td> 
      @Html.HiddenFor(model => model.Itemid, new { size = 4 }) 
      @Html.DropDownList("StockCode", 
        new SelectList(ViewBag.StockCodeList, "Value", "Text"), 
        new 
        { 
         @class = "form-control selectpicker", 
         @Value = @Model.Description, 
         onchange = "this.form.submit();", 
         data_show_subtext = "true", 
         data_live_search = "true" 
        }) 
     </td> 

     <td> 
      @Html.DropDownListFor(x => x.StockCode, 
         (IEnumerable<SelectListItem>)ViewBag.AllStockList, 
         new 
         { 
          @class = "form-control selectpicker", 
          @Value = @Model.Description, 
          onchange = "this.form.submit();", 
          data_show_subtext = "true", 
          data_live_search = "true" 
         }) 
     </td> 

     <td> 
      @Html.EditorFor(model => model.QtyOrder, new { htmlAttributes = new { @class = "form-control Width", @Value = @Model.QtyOrder } }) 
     </td> 

     <td> 
      @Html.EditorFor(model => model.UnitPrice, new { htmlAttributes = new { @class = "form-control Width", @Value = @Model.UnitPrice } }) 
     </td> 

     <td> 
      @Html.EditorFor(model => model.NetAmount, new 
      { 
       htmlAttributes = new { @class = "form-control Width", @Value = @Model.NetAmount } 
      }) 
     </td> 

     <td> 
      @Html.EditorFor(model => model.TaxAmount, new { htmlAttributes = new { @class = "form-control Width", @Value = @Model.TaxAmount } }) 
     </td> 

     <td> 
      @Html.EditorFor(model => model.FullNetAmount, new { htmlAttributes = new { @class = "form-control Width", @Value = @Model.FullNetAmount } }) 
     </td> 

     <td> 
      <a href="#" class="deleteRow btn blue">Remove</a> 
     </td> 
    } 
</div> 
+0

gleiche Problem occurred.Please Meine antwort: [link] (https://stackoverflow.com/questions/35079823/row-column-alignment-when-dynamic-adding-rows-to-a-html-table-using-beginc/45720274#45720274) – Krishan

Antwort

0

die Lösung, die in der für mich gearbeitet wurde

<table class="inventory"> 
    <thead> 
     <tr> 
      <th width="180"><span>Code</span></th> 
      <th width="265"><span>Description</span></th> 
      <th><span>Price</span></th> 
      <th><span>Quantity</span></th> 
      <th><span>Discount %</span></th> 
      <th><span>Discount Amt</span></th> 
      <th><span>Net £</span></th> 
      <th><span>Tax %</span></th> 
      <th><span>VAT Amt</span></th> 
     </tr> 
    </thead> 

    @{ 
     if (Model.OrderLines == null) 
     { 
      Model.OrderLines = new List<Accounts.Models.OrderLines>(); 
      Accounts.Models.OrderLines Line = new Accounts.Models.OrderLines(); 
      Line.CustomerID = Model.CustomerID; 
      Model.OrderLines.Add(Line); 
     } 

     foreach (var item in Model.OrderLines) 
     { 
      Html.RenderPartial("orderline", item); 
     } 
    } 

</table> 

Und Teil

@using HtmlHelpers.BeginCollectionItem 
@{ 
    Layout = ""; 
} 

@using (Html.BeginCollectionItem("OrderLines")) 
{ 
    <tbody> 
     <tr> 
      <td> 
       <a class="cut">-</a><span contenteditable> 
        @Html.DropDownList("StockCode", new SelectList(ViewBag.StockCodeList, "Value", "Text"), 
        new 
        { 
         @class = "form-control selectpicker", 
         @Value = @Model.Description, 
         onchange = "this.form.submit();", 
         data_show_subtext = "true", 
         data_live_search = "true" 
        }) 
       </span> 
      </td> 
      <td><span contenteditable> 
        @Html.DropDownList("StockCode", new SelectList(ViewBag.AllStockList, "Value", "Text"), 
           new 
            { 
             @class = "form-control selectpicker ", 
             onchange = "this.form.submit();", 
             data_show_subtext = "true", 
             data_live_search = "true" 
            }) 
       </span></td> 
      <td><span data-prefix>$</span><span contenteditable>150.00</span></td> 
      <td><span contenteditable>4</span></td> 
      <td><span contenteditable>0</span></td> 
      <td><span contenteditable>0.00</span></td> 
      <td><span contenteditable>0.00</span></td> 
      <td><span contenteditable>0</span></td> 
      <td><span data-prefix>$</span><span>0.00</span></td> 
     </tr> 
    </tbody> 
} 
0

Sie zwei tr verwenden können, ich meine zwei Tabellenzeilen statt eines und konstruieren reihenweise in Ihrer Perspektive. Sie haben nur 1 Stb verwendet und innerhalb dieser Zeile 2 Dropdowns oder Textfelder hinzugefügt. Danach können Sie überprüfen, ob Ihr HTML ein gültiger html5 ist. Link https://validator.w3.org

Auch von der Hauptansicht starten Sie einfach die Tabelle Markup..danach foreach..which wird nur Zeile .. am Ende Sie schließen Ihre Tabelle mark up. Problem ist, dass Sie zu viele Tabellen haben. Ich würde sagen, dass es zu nur 1 Tabelle kombiniert werden kann.

Hauptansicht: Tabelle beginnt mit Kopf ... foreach Artikel ......... Teilansicht mit Tabellenzeile nur .... Ende foreach Hauptansicht: close Tabelle

+0

Bitte siehe oben für Update. Irgendwelche Gedanken würden geschätzt werden. –