Display table based on individual column search: Retain search field and value
Display table based on individual column search: Retain search field and value
我正在使用 Razorview 和 Entity Framework,我正在尝试实现以下目标:我有一个下拉列表 (id=ColumnName),其中包含列名列表和一个文本框 (id=SearchValue) 用于值从 table 中搜索。单击一个按钮,我从数据库中检索相关数据(列名称为 'ColumnName' 的记录被选中且值='SearchValue')。这工作正常,但是当我取回相关数据时,我丢失了 'SearchValue' 和 'ColumnName' 选择。我不确定如何保存选择和输入的值并在 table 中取回相关数据。我的代码如下:
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>
国家控制器:
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");
}
注意:我在这个控制器中还有其他方法,比如创建、编辑。
我继续做了 searchvalue razor 示例,你只需要为 columnname 做适当的 razor 元素,这将是一个选定的项目,同样有很多在线教程。
<form id="myform" action="FilterByColumn" method="post">
<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>
@if (ViewBag.searchval != "" ){
@Html.Raw ('<input type='text' id='cs' name='SearchValue' value="+@viewbag.searchval+">");
}
else
{
@Html.Raw ('<input type="text" id="cs" name='SearchValue'>");
}
<input type="submit" value="Search" />
</form>
<table id='myTable'>
// values
</table>
国家控制器:
public ActionResult FilterByColumn(String ColumnName)
{
ViewBag.searchval = "";
string SearchValue = Request.Form["SearchValue"];
if (SearchValue != "" )
{
List<Country> result = new List<Country>();
result = db.Countries.ToList();
result = db.Countries.Where(ColumnName + ".Contains" + "(\"" + SearchValue.ToLower() + "\")").ToList();
ViewBag.searchval = SearchValue;
return View(result);
}
return RedirectToAction("Index");
}
我正在使用 Razorview 和 Entity Framework,我正在尝试实现以下目标:我有一个下拉列表 (id=ColumnName),其中包含列名列表和一个文本框 (id=SearchValue) 用于值从 table 中搜索。单击一个按钮,我从数据库中检索相关数据(列名称为 'ColumnName' 的记录被选中且值='SearchValue')。这工作正常,但是当我取回相关数据时,我丢失了 'SearchValue' 和 'ColumnName' 选择。我不确定如何保存选择和输入的值并在 table 中取回相关数据。我的代码如下:
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>
国家控制器:
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");
}
注意:我在这个控制器中还有其他方法,比如创建、编辑。
我继续做了 searchvalue razor 示例,你只需要为 columnname 做适当的 razor 元素,这将是一个选定的项目,同样有很多在线教程。
<form id="myform" action="FilterByColumn" method="post">
<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>
@if (ViewBag.searchval != "" ){
@Html.Raw ('<input type='text' id='cs' name='SearchValue' value="+@viewbag.searchval+">");
}
else
{
@Html.Raw ('<input type="text" id="cs" name='SearchValue'>");
}
<input type="submit" value="Search" />
</form>
<table id='myTable'>
// values
</table>
国家控制器:
public ActionResult FilterByColumn(String ColumnName)
{
ViewBag.searchval = "";
string SearchValue = Request.Form["SearchValue"];
if (SearchValue != "" )
{
List<Country> result = new List<Country>();
result = db.Countries.ToList();
result = db.Countries.Where(ColumnName + ".Contains" + "(\"" + SearchValue.ToLower() + "\")").ToList();
ViewBag.searchval = SearchValue;
return View(result);
}
return RedirectToAction("Index");
}