Ich verwende Razorview und Entity Framework und versuche Folgendes zu erreichen: Ich habe ein Dropdown (id = ColumnName), das eine Liste von Spaltennamen und a enthält Textfeld (id = SearchValue) für den zu suchenden Wert aus einer Tabelle. Auf Knopfdruck lade ich die relevanten Daten aus der Datenbank ab (der Datensatz, in dem der Spaltenname "ColumnName" ausgewählt ist und value = 'SearchValue'). Das funktioniert gut, aber wenn ich die relevanten Daten zurückbekomme, verliere ich den ausgewählten 'SearchValue' und 'ColumnName'. Ich bin mir nicht sicher, wie ich den ausgewählten Wert speichern und eingeben kann und bekomme nur die relevanten Daten in der Tabelle zurück. Mein Code ist wie folgt:Tabelle nach individueller Spaltensuche anzeigen: Suchfeld und Wert beibehalten
HTML:
<select id='mySelector' name="ColumnName">
<option value="">Please Select</option>
<option value='Country'>Country</option>
<option value='Title'>Title</option>
<option value='State'>State</option>
</select>
<input type="text" id="cs" name="SearchValue">
<input type="button" value="Search" onclick="location.href='@Url.Action("FilterByColumn", "CountryController")?SearchValue=' + document.getElementById('cs').value + '&ColumnName=' +document.getElementById('mySelector').value" />
<table id='myTable'>
// values
</table>
CountryController:
public ActionResult FilterByColumn(String ColumnName, String SearchValue)
{
if (!String.IsNullOrEmpty(SearchValue))
{
List<Country> result = new List<Country>();
result = db.Countries.ToList();
result = db.Countries.Where(ColumnName + ".Contains" + "(\"" + SearchValue.ToLower() + "\")").ToList();
return View(result);
}
return RedirectToAction("Index");
}
Anmerkung: Ich habe andere Methoden wie erstellen, bearbeiten in diesem Controller.
so, wie ich es tun, ist die Verwendung jquery Suchwert in ein verstecktes Feld einfügen und dann sicherzustellen, dass ich gehe, dass mit ViewBag zu der Ansicht zurück. Dies hält Informationen aus der URL heraus, die Ihre Datenbank später der Injektion aussetzen könnten. – Danimal
Sie können auch ajax verwenden, um nur die Daten zu aktualisieren, die aktualisiert werden sollen, wobei alle vorherigen Seitendaten beibehalten werden. – Danimal
@Danimal: Würdest du das mit einem Beispiel erklären können? – user7221204