如何在asp.net web应用程序中搜索数据

本文关键字:应用程序 搜索 数据 web net asp | 更新日期: 2023-09-27 18:02:21

我需要帮助我的asp.net web应用程序。我有一个页面,我显示数据(所有用户)与数据网格。目前,当我只有几个用户时,没有问题。但是当一个数据库将被100多个用户填充时,将很难找到指定的用户。

我需要创建一个搜索引擎(按名称搜索)。我已经找到了一些教程,但它们都是基于创建一个新的数据网格和创建一个新的sql数据源。

我需要确保,当管理员在数据类型查找成员,它显示在同一数据网格中搜索的用户。我已经有一个代码删除和编辑数据,有人能帮我创建一个代码或至少指导我,如何使搜索引擎?谢谢你

下面是我的代码:
<asp:CommandField CancelText="Cancel" DeleteText="Delete" EditText="Edit" ShowDeleteButton="true" SelectText="Select" UpdateText="Update" ShowEditButton="True" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [Users] WHERE [Id] = @Id" InsertCommand="INSERT INTO [Users] ([Id], [Name], [LastName],) VALUES (@Id, @Name, @LastName,)" SelectCommand="SELECT * FROM [Users]" UpdateCommand="UPDATE [Users] SET [Name] = @Name, [LastName] = @LastName, WHERE [Id] = @Id">
        <DeleteParameters>
            <asp:Parameter Name="Id" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Id" Type="Int32" />
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="LastName" Type="String" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="LastName" Type="String" />
        </UpdateParameters>
    </asp:SqlDataSource>
编辑:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource">
        <Columns>
            <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="true" SortExpression="Id" Visible="false" />
            <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" >                    
                <ItemStyle Width="150px" />
            </asp:BoundField>
            <asp:BoundField DataField="lastName" HeaderText="LastName" SortExpression="lastName" >
                <ControlStyle Width="100px" />
                <ItemStyle Width="150px" />
            </asp:BoundField>

如何在asp.net web应用程序中搜索数据

使用过滤器表达式

将SqlDatasource修改为

 <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [Users] WHERE [Id] = @Id" InsertCommand="INSERT INTO [Users] ([Id], [Name], [LastName],) VALUES (@Id, @Name, @LastName,)" SelectCommand="SELECT * FROM [Users]" FilterExpression="Name LIKE '%{0}%' UpdateCommand="UPDATE [Users] SET [Name] = @Name, [LastName] = @LastName, WHERE [Id] = @Id">
        <DeleteParameters>
            <asp:Parameter Name="Id" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Id" Type="Int32" />
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="LastName" Type="String" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="LastName" Type="String" />
        </UpdateParameters>
<FilterParameters>
                <asp:ControlParameter ControlID="txtSearch" PropertyName="Text" DefaultValue="%" />
            </FilterParameters>
    </asp:SqlDataSource>

添加
FilterExpression="Name LIKE '%{0}%'

<FilterParameters>
   <asp:ControlParameter ControlID="txtSearch" PropertyName="Text" DefaultValue="%" />
</FilterParameters>

请将我用于ControlID的txtSearch替换为用于搜索的文本框的ID。

据我所知,您需要按名称筛选网格结果。首先,更改Select查询以添加过滤器。

SELECT * FROM [Users] where ((not @Name is null and [Name] like '%' + @Name + '%'))

然后在SqlDatasource中添加Control参数:

<SelectParameters>
<asp:ControlParameter ControlID="TextboxName" Name="Name" PropertyName="Text" ConvertEmptyStringToNull="False" />
</SelectParameters>

然后在你的搜索按钮后面添加以下代码:

  protected void Button1_Click(object sender, EventArgs e)
    {
        GridView1.DataBind();
    }

希望对你有帮助。

使用backgrid

为避免多个数据源,它执行客户端过滤和快速变化。