【问题标题】:How to search data in asp.net web application如何在asp.net Web应用程序中搜索数据
【发布时间】:2014-05-07 11:12:37
【问题描述】:

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

我需要创建一个搜索引擎(按名称搜索)。已经找了几篇教程了,不过都是基于新建datagrid和新建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>

【问题讨论】:

  • 你保留文本框和搜索按钮???
  • 是的,我有一个用于搜索的文本框和一个按钮
  • 我可以用你的代码来绑定网格吗..​​..
  • @X-Developer 我编辑我的帖子。这是你想要的吗?
  • 更改您的选择命令以按名称过滤。 SELECT * FROM [Users] where Name=@Name

标签: c# asp.net search sqldatasource sqlcommand


【解决方案1】:

使用Filter Expression

修改你的 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。

【讨论】:

  • 谢谢谢谢这是完美的。千百次感谢!
【解决方案2】:

据我了解,您需要按名称过滤网格结果。首先更改您的选择查询以添加过滤器。

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();
    }

希望对你有帮助。

【讨论】:

  • 是的,这正是我想要做的,但是当我点击“搜索”时,什么也没有发生。恐怕搜索框(文本框)和按钮没有连接?
  • @fkr 你能在网格外使用 asp 文本框和按钮吗?而不是使用控制参数....
  • 你好。 @ZedBee 已经给了我正确的答案,但你的答案也非常有帮助。非常感谢您的帮助和时间。您的意见很有帮助!
【解决方案3】:

使用backgrid

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多