我有以下两个表:
Table1
___________
ID
Name
Company
Industry
Rank
Key - guid
和
Table2
_____________
Key - guid
FieldValue
StartDate
EndDate
我使用的是MVC模式,而不是常规的Web表单。我为每个和单独的DBContext类创建了2个单独的模型类。
最初页面加载时,我会在页面上显示Table1中的所有数据。我想在页面顶部添加一个文本框,当用户输入一个值并点击回车时,我想根据用户输入的值在页面上的表格中过滤数据:
SELECT ID, Name, Company,Industry, Rank
FROM Table1 INNER JOIN Table2 ON Table1.Key=Table2.Key
WHERE FieldValue=TextBox1.Text
我已经有了在页面上显示Table1数据的代码,但我需要帮助根据文本框的值添加过滤器。有人能指出我正确的方向吗?
以下是我在视图中的代码:
<input type="text" id="TextBox1" />
<h2>Records</h2>
<table style="border: 1px solid black;">
<tr>
<th>ID</th>
<th>Name</th>
<th>Company</th>
<th>Industry</th>
<th>Rank</th>
</tr>
@foreach (ProjectName.Models.Records item in Model)
{
<tr style="border: 1px solid black;">
<td>@item.ID</td>
<td>@item.Name</td>
<td>@item.Company</td>
<td>@item.Industry</td>
<td>@item.Rank</td>
</tr>
}
</table>
以下是更新后的视图代码:
<div>
@using (Html.BeginForm())
{
<input type="text" id="TextBox1" />
<input type="submit" name="submit" />
}
<h2>Records</h2>
<table style="border: 1px solid black;">
<tr>
<th>ID</th>
<th>Name</th>
<th>Company</th>
<th>Industry</th>
<th>Rank</th>
</tr>
@foreach (ProjectName.Models.Records item in Model)
{
<tr style="border: 1px solid black;">
<td>@item.ID</td>
<td>@item.Name</td>
<td>@item.Company</td>
<td>@item.Industry</td>
<td>@item.Rank</td>
</tr>
}
</table>
</div>
P.S。亲爱的编辑们,请相当请,停止编辑MVC中的单词MVC - 否则人们认为它是Web Forms模式而不是MVC。请尽情,请停止编辑,你没有帮助,只是让事情变得困难。非常感谢你,我的欣赏是超越
答案 0 :(得分:1)
即使您正在使用MVC,仍然需要<form>
将过滤器值提交给控制器方法。
这是MVC表单中的文本框:
@using (Html.BeginForm())
{
<input type="text" name="TextBox1" />
<input type="submit" name="submit" />
}
这是HTML <form>
标记。您的控制器如下所示:
public ActionResult Index(string TextBox1)
{
// You don't say how you're interacting with the database,
// but you need to check the `TextBox1` parameter for null,
// and use it in your query if it's not - simplified:
if(TextBox1 != null)
{
// do qry with parameter
}
else
{
// do qry without parameter
}
...
有几种方法可以做我上面写的,但这是一个简单的版本,不需要修改你的ViewModel
(主要是因为我不知道它是什么样的!)
答案 1 :(得分:0)
您可以使用datatables plugin,您可以使用静态或服务器表格过滤。
最基本的例子:
$(document).ready(function() {
$('#example').DataTable();
});
答案 2 :(得分:0)
首先,创建回发的内容,如<as:button>
并正确链接后面代码中的事件,然后:
using(context db = new context())
{
List<Table2> var1 = db.Table2.ToList()
List<Table2> var2 = new List<Table2>()
foreach(Table2 t in var1)
{
if(t.FieldValue == textbox.Text)
{
var2.Add(t);
}
}
}
然后:
foreach(Table2 t in var2)
{
//Bind your things here
}
很抱歉,如果它没有帮助你,或者我误解了这个问题。