Buchen Sie eine HTML-Tabelle für die ADO.NET DataTable
Ich habe eine HTML-Tabelle wie unten in meiner Ansicht:
<table id="tblCurrentYear">
<tr>
<td>Leave Type</td>
<td>Leave Taken</td>
<td>Leave Balance</td>
<td>Leave Total</td>
</tr>
@foreach (var item in Model.LeaveDetailsList)
{
<tr>
<td>@Html.TextBoxFor(m => item.LeaveType, new { width = "100" })</td>
<td>@Html.TextBoxFor(m => item.LeaveTaken, new { width = "100" })</td>
<td>@Html.TextBoxFor(m => item.LeaveBalance, new { width = "100" })</td>
<td>@Html.TextBoxFor(m => item.LeaveTotal, new { width = "100" })</td>
</tr>
}
</table>
Ich möchte durchläuft alle html Tabelle Zeilen einfügen und die Werte in ADO.NET DataTable.
Einfach sprechen, konvertieren von HTML-Tabelle ADO.NET DataTable.
Gewusst wie: extrahieren von Werten aus einem HTML-Table und insert into ADO.NET DataTable?
Die Ansicht basiert auf dem folgenden Modell
public class LeaveBalanceViewModel
{
public LeaveBalanceViewModel()
{
this.EmployeeDetail = new EmployeeDetails();
this.LeaveBalanceDetail = new LeaveBalanceDetails();
this.LeaveDetailsList = new List<LeaveBalanceDetails>();
}
public EmployeeDetails EmployeeDetail { get; set; }
public LeaveBalanceDetails LeaveBalanceDetail { get; set; }
public List<LeaveBalanceDetails> LeaveDetailsList { get; set; }
}
Sind Sie auf der Suche nach der text-box-Werte der Tabelle und einfügen in die Datenbank oder den kompletten html Code einfügen muss ?
War es nicht klar, durch unsere Kommentare zu deiner letzten Frage, dass Sie nicht verwenden Sie einen
Aber die foreach arbeitet und ich in der Lage zu füllen, HTML Tabelle mit ihm. Sobald dieser Tabelle generiert wird, können Benutzer ändern Sie den Wert in einem Textfeld, und klicken Sie auf die Schaltfläche Speichern. Klicken Sie auf Save, ich will zu wählen alle TextBox-Werte (Zeilen) einfügen und in ADO.NET DataTable.
NEIN ist es nicht - Sie sehen die Werte in die anzeigen, aber Sie können Sie nicht binden, nichts, wenn Sie post zurück. Untersuchen Sie das html Ihrer Erzeugung - Sie haben mehrere Textfelder mit
Warum müssen Sie fügen Sie diese in ADO.Net Tabelle ? Sind Sie auf der Suche zu speichern diese in die Datenbank ein ?
War es nicht klar, durch unsere Kommentare zu deiner letzten Frage, dass Sie nicht verwenden Sie einen
foreach
Schleife zu erzeugen die Steuerelemente in einer collection. Sie brauchen eine for
Schleife oder eine benutzerdefinierte EditorTemplate
für das Modell. Ihre foreach
loop nicht binden zu nichts.Aber die foreach arbeitet und ich in der Lage zu füllen, HTML Tabelle mit ihm. Sobald dieser Tabelle generiert wird, können Benutzer ändern Sie den Wert in einem Textfeld, und klicken Sie auf die Schaltfläche Speichern. Klicken Sie auf Save, ich will zu wählen alle TextBox-Werte (Zeilen) einfügen und in ADO.NET DataTable.
NEIN ist es nicht - Sie sehen die Werte in die anzeigen, aber Sie können Sie nicht binden, nichts, wenn Sie post zurück. Untersuchen Sie das html Ihrer Erzeugung - Sie haben mehrere Textfelder mit
name="LeaveType"
. Damit binden Sie Ihre Sammlung auf die post zurück, die kontrolliert werden müssen LeaveBalanceDetail[0].LeaveType
, LeaveBalanceDetail[1].LeaveType
etc.Warum müssen Sie fügen Sie diese in ADO.Net Tabelle ? Sind Sie auf der Suche zu speichern diese in die Datenbank ein ?
InformationsquelleAutor RKh | 2015-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ordnung zu binden, um ein Modell auf die post zurück, die
name
Attribute der Formular-Steuerelemente müssen mit den Modell-Eigenschaften. Ihre Nutzung desforeach
Schleife nicht generieren die korrekten Namen der Attribute. Wenn Sie überprüfen die html-sehen Sie mehrere Instanzen vonaber um eine Bindung zu Ihrem Modell die kontrolliert werden müssten
etc. Der einfachste Weg, um darüber nachzudenken, ist, zu betrachten, wie würden Sie den Zugriff auf den Wert eines
LeaveType
Eigenschaft inC#
codeDa Ihre POST-Methode wird ein parameter-Namen (sagen
model
), legen Sie einfach das Präfix (model
) und das ist, wie das name-Attribut des Steuerelements sein muss. Um dies zu tun, müssen Sie entweder einefor
Schleife (die collection implementieren mussIList<T>
)oder verwenden Sie eine benutzerdefinierte
EditorTemplate
(die Sammlung braucht nur zuzugreifenIEnumerable<T>
)In
/Views/Shared/EditorTemplates/LeaveBalanceDetails.cshtml
und dann in der Haupt-Ansicht (nicht in der Schleife)
werden und schließlich in der Steuerung
Dies war sehr hilfreich!!! Ich bin immer noch ein Thema, obwohl - ich habe meine Modell-Typ, um eine Liste statt IEnumerable und Durchlaufen Sie in der Ansicht mithilfe einer For-Schleife statt, die Für Jeden. Wenn ich behaupte, dass, obwohl, es wird an den Controller, und mein Modell gibt es Nichts! Warum wäre es Nichts?
Ohne zu sehen, deinen code habe ich keine Ahnung, was Fehler, die Sie gemacht. Sie müssen eine Frage stellen, zeigen die entsprechenden details, und wir werden in der Lage sein, Sie zu beantworten 🙂
InformationsquelleAutor
Hinsichtlich Ihrer Anforderung, versuchen Sie, diese
InformationsquelleAutor lashja
In Ordnung zu binden, um ein Modell auf die post zurück, die
name
Attribute der Formular-Steuerelemente müssen mit den Modell-Eigenschaften. Ihre Nutzung desforeach
Schleife nicht generieren die korrekten Namen der Attribute. Wenn Sie überprüfen die html-sehen Sie mehrere Instanzen vonaber um eine Bindung zu Ihrem Modell die kontrolliert werden müssten
etc. Der einfachste Weg, um darüber nachzudenken, ist, zu betrachten, wie würden Sie den Zugriff auf den Wert eines
LeaveType
Eigenschaft inC#
codeDa Ihre POST-Methode wird ein parameter-Namen (sagen
model
), legen Sie einfach das Präfix (model
) und das ist, wie das name-Attribut des Steuerelements sein muss. Um dies zu tun, müssen Sie entweder einefor
Schleife (die collection implementieren mussIList<T>
)oder verwenden Sie eine benutzerdefinierte
EditorTemplate
(die Sammlung braucht nur zuzugreifenIEnumerable<T>
)In
/Views/Shared/EditorTemplates/LeaveBalanceDetails.cshtml
und dann in der Haupt-Ansicht (nicht in der Schleife)
werden und schließlich in der Steuerung
Hinsichtlich Ihrer Anforderung, versuchen Sie, diese