GridView Fitch所有数据,不管我的查询条件

本文关键字:不管 我的 查询 条件 数据 Fitch GridView | 更新日期: 2023-09-27 18:12:28

当我创建条件时,我通过SQLDATASOURCE查询生成器测试了asp.net网页,结果就像我想要的一样,但是当我使用asp.net页面搜索数据时,所有结果都显示不考虑我的条件,任何人都可以解释为什么??我的代码是这样的

sql查询

SELECT        IQCRM_NUM,
              Full_name,
              Mother_Name,
              Date_of_Birth,
              Province_of_birth,
              Job
FROM    [Criminal Main Table]
WHERE   (Full_name LIKE N'%' + @Full_name + N'%') OR
        (Mother_Name LIKE N'%' + @Mother_Name + N'%') OR
        (Date_of_Birth LIKE N'%' + @Date_of_Birth + N'%')

我的ASP。. NET代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .style1
        {
            width: 30%;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Search" />
        <br />
        <table class="style1">
            <tr>
                <td>
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="TextBox1_NAM" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="TextBox2_Mother" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="TextBox3_Birth" runat="server"></asp:TextBox>
                </td>
            </tr>
        </table>
        <br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="IQCRM_NUM"
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="IQCRM_NUM" HeaderText="IQCRM_NUM" ReadOnly="True" SortExpression="IQCRM_NUM" />
                <asp:BoundField DataField="Full_name" HeaderText="Full_name" SortExpression="Full_name" />
                <asp:BoundField DataField="Mother_Name" HeaderText="Mother_Name" SortExpression="Mother_Name" />
                <asp:BoundField DataField="Date_of_Birth" HeaderText="Date_of_Birth" SortExpression="Date_of_Birth" />
                <asp:BoundField DataField="Province_of_birth" HeaderText="Province_of_birth" SortExpression="Province_of_birth" />
                <asp:BoundField DataField="Job" HeaderText="Job" SortExpression="Job" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CriminalDBBefore2003ConnectionString %>"
            SelectCommand="SELECT IQCRM_NUM, Full_name, Mother_Name, Date_of_Birth, Province_of_birth, Job FROM [Criminal Main Table] WHERE (Full_name LIKE N'%' + @Full_name + N'%') OR (Mother_Name LIKE N'%' + @Mother_Name + N'%') OR (Date_of_Birth LIKE N'%' + @Date_of_Birth + N'%')">
            <SelectParameters>
                <asp:ControlParameter ControlID="TextBox1_NAM" ConvertEmptyStringToNull="False" Name="Full_name"
                    PropertyName="Text" Type="String" />
                <asp:ControlParameter ControlID="TextBox2_Mother" ConvertEmptyStringToNull="False"
                    Name="Mother_Name" PropertyName="Text" Type="String" />
                <asp:ControlParameter ControlID="TextBox3_Birth" ConvertEmptyStringToNull="False"
                    Name="Date_of_Birth" PropertyName="Text" Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>
    </div>
    </form>
</body>
</html>

GridView Fitch所有数据,不管我的查询条件

您可以使用FilterParameters代替SelectParameters,并添加FilterExpression,就像这个示例。

SelectCommand -这里我们需要设置没有任何WHERE子句或过滤器的默认SQL查询。

FilterExpression—这里我们需要用占位符{0}设置SQL查询的过滤器部分。占位符{0}将被ControlParameter的值所取代,即TextBox的Text

FilterParameters—这里我们指定FilterExpression

使用的控制参数
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CriminalDBBefore2003ConnectionString %>"
               SelectCommand="SELECT IQCRM_NUM, Full_name, Mother_Name, Date_of_Birth, Province_of_birth, Job FROM Criminal Main Table" FilterExpression="Full_name LIKE '{0}%' OR Mother_Name LIKE '{1}%' OR Date_of_Birth LIKE '{2}%'">
<FilterParameters>
    <asp:ControlParameter ControlID="TextBox1_NAM" ConvertEmptyStringToNull="False" Name="Full_name"
                          PropertyName="Text" Type="String"/>
    <asp:ControlParameter ControlID="TextBox2_Mother" ConvertEmptyStringToNull="False"
                          Name="Mother_Name" PropertyName="Text" Type="String"/>
    <asp:ControlParameter ControlID="TextBox3_Birth" ConvertEmptyStringToNull="False"
                          Name="Date_of_Birth" PropertyName="Text" Type="String"/>
</FilterParameters>