繁体   English   中英

如何使用 LINQ to SQL 类在 .NET 4 中的动态数据站点中实现搜索

[英]How to implement Search in Dynamic Data Site in .NET 4 with LINQ to SQL Classes

我刚刚创建了一个默认动态数据​​站点。 如何向其中添加搜索?

您可以通过执行以下操作来添加搜索功能。

首先使用以下代码将UI添加到List.aspx页面

<fieldset id="MultiSearchFieldSet" class="DD" runat="server" visible="False">
 <asp:TextBox ID="txbMultiColumnSearch" CssClass="DDTextBox" runat="server" />
    <asp:Button ID="btnMultiColumnSearchSubmit" CssClass="DDControl" runat="server" Text="Search"
        OnClick="btnMultiColumnSearch_Click" />
    <asp:Button ID="btnMultiColumnSearchClear" CssClass="DDControl" runat="server" Text="Clear"
        OnClick="btnMultiColumnSearch_Click" />
</fieldset>

接下来,我们要为按钮添加代码隐藏,所以在 List.aspx.cs 上

protected void btnMultiColumnSearch_Click(object sender, EventArgs e)
        {
        }

并将其更改为

 protected void btnMultiColumnSearch_Click(object sender, EventArgs e)
        {
            var button = (Button)sender;
            if (button.ID == btnMultiColumnSearchClear.ID)
                txbMultiColumnSearch.Text = String.Empty;
            else
                using (PhoneListDataContext Data = new PhoneListDataContext())
                {
                    EmployeeNameString = txbMultiColumnSearch.Text;
                    var SearchResults = Data.Employees.Where
                       (Employee => (Employee.FirstName.Contains(EmployeeNameString) || (Employee.LastName.Contains(EmployeeNameString))));


                    GridView1.DataSourceID = ""; 
                    GridView1.DataSource = SearchResults;
                    GridView1.DataBind();


                }
        }

最后,因为我们只搜索“Employees”表,我想过滤搜索框的可见性,只对员工的表。

所以我将此代码添加到受保护的 void Page_Load 中的List.aspx.cs

 if (table.DisplayName == "Employees") { MultiSearchFieldSet.Visible = true; }     
            else
            { MultiSearchFieldSet.Visible = false; };

现在页面是可搜索的!

更简单的解决方案

  • 为您的 mything -table 创建文件夹,请注意 DynamicData-system 使用您的表的复数名称 (mything ---> mythings)
    • DynamicData\\CustomPages\\mythings\\
  • 将 DynamicData\\PageTemplates\\List.aspx 复制到 DynamicData\\CustomPages\\mythings\\
  • 编辑 DynamicData\\CustomPages\\mythings\\List.aspx

更改此行:

 <h2 class="DDSubHeader"><%= table.DisplayName%></h2>

对此:

<h2 class="DDSubHeader"><%= table.DisplayName%></h2>
 <!-- Custom: 
    - Added SearchTextBox and SearchButton. 
        - Attention: Requires SearchExpression to work, 
        see next Custom -comment later in this page. 
--> 
<table>
    <tr>
        <td>
            <asp:TextBox ID="SearchTextBox" runat="server" />
        </td>
        <td>
            <asp:Button ID="SearchButton" runat="server" Text="Search" />
        </td>
        <td>
            <div class="DDBottomHyperLink">
                <a  href="<%= HttpContext.Current.Request.Url.AbsoluteUri %>">Clear search filter</a>
            </div>
        </td>
    </tr>
</table>
<!-- Custom ends --> 

更改 QueryExtender

由此:

        <asp:QueryExtender TargetControlID="GridDataSource" ID="GridQueryExtender" runat="server">
            <asp:DynamicFilterExpression ControlID="FilterRepeater" />
        </asp:QueryExtender>

对此:

        <!-- Custom: edit QueryExtender --> 
        <asp:QueryExtender TargetControlID="GridDataSource" ID="GridQueryExtender" runat="server">
            <asp:DynamicFilterExpression ControlID="FilterRepeater" />
               <asp:SearchExpression SearchType="Contains" DataFields="myfirstfield,mysecondfield,myNthfield" >
               <asp:ControlParameter ControlID="SearchTextBox" />
            </asp:SearchExpression>
        </asp:QueryExtender>
        <!-- Custom ends --> 

注意改变myfirstfield,mysecondfield,myNthfield在您mything -table文本字段名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM