根据文本框值

时间:2015-10-05 14:19:33

标签: c# asp.net-mvc entity-framework

我有以下两个表:

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。请尽情,请停止编辑,你没有帮助,只是让事情变得困难。非常感谢你,我的欣赏是超越

3 个答案:

答案 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
  }

很抱歉,如果它没有帮助你,或者我误解了这个问题。