Критерии поиска по нескольким столбцам GridView - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь выполнить поиск, используя несколько критериев, заданных TextBoxes и DropDownList.
Проблема, с которой я сталкиваюсь, заключается в том, что мне требуется способ присоединения дополнительных команд AND LIKE, если указанные TextBoxes / DropDownList имеют значения вих, к сожалению, кнопка не ведет себя так, как я хочу, она не показывает данные в сетке.Даже с пустыми текстовыми полями эта кнопка не выполняет команду SELECT.

КОД:

protected void queryButton_Click(object sender, EventArgs e)
{
    string Filter = "";

    if (resIDSearch.Text != "") { Filter = Filter + "ID LIKE '%" + resIDSearch.Text + "%' AND "; }
    if (DFirstName.Text != "") { Filter = Filter + "FirstName LIKE '%" + DFirstName.Text + "%' AND "; }
    if (DLastName.Text != "") { Filter = Filter + "LastName LIKE '%" + DLastName.Text + "%' AND "; }
    if (contactNumSearch.Text != "") { Filter = Filter + "ContactNumber LIKE '%" + contactNumSearch.Text + "%' AND "; }
    if (lotNumSearch.Text != "") { Filter = Filter + "LotNumber LIKE '%" + lotNumSearch.Text + "%' AND "; }
    if (streetSearch.Text != "") { Filter = Filter + "StreetName LIKE '%" + streetSearch.Text + "%' AND "; }
    if (villiageSearch.Text != "") { Filter = Filter + "VilliageName LIKE '%" + villiageSearch.Text + "%' AND "; }
    if (vTypeBox.SelectedIndex != 0) { Filter = Filter + "VehicleType LIKE '%" + vTypeBox.SelectedItem.Text + "%' AND "; }
    if (statusBox.SelectedIndex != 0) { Filter = Filter + "StatusID LIKE '%" + statusBox.SelectedValue + "%' AND "; }
    if (DriIDSearch.Text != "") { Filter = Filter + "UserID LIKE '%" + DriIDSearch.Text + "%' AND "; }
    if (resDateSearch.Text != "") { Filter = Filter + "ReservationDate LIKE '%" + resDateSearch.Text + "%' AND "; }
    if (destSearch.Text != "") { Filter = Filter + "Destination LIKE '%" + destSearch.Text + "%' AND "; }
    if (pickUpSearch.Text != "") { Filter = Filter + "PickupLocation LIKE '%" + pickUpSearch.Text + "%' AND "; }

    if (Filter.Length > 0)
    {
        string FinalFilter = Filter.Remove(Filter.Length - 4, 3);
        resDataSource.FilterExpression = FinalFilter;
    }
    else {
        reservationTable.DataBind();
    }
}

.NET SCRIPT:

<asp:GridView OnRowDataBound="reservationTable_RowDataBound" DataSourceID="resDataSource" CssClass="table table-bordered dataTable text-center" Width="100%" ID="reservationTable" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="Reservation ID" />
        <asp:BoundField DataField="UserID" HeaderText="Driver ID" />
        <asp:BoundField DataField="FirstName" HeaderText="Driver First Name" />
        <asp:BoundField DataField="LastName" HeaderText="Driver Last Name" />
        <asp:BoundField DataField="StatusID" HeaderText="Status" />
        <asp:BoundField DataField="ContactNumber" HeaderText="Customer Contact #" />
        <asp:BoundField DataField="LotNumber" HeaderText="Lot Number" />
        <asp:BoundField DataField="StreetName" HeaderText="Street Name" />
        <asp:BoundField DataField="VilliageName" HeaderText="Villiage" />
        <asp:BoundField DataField="Note" HeaderText="Additional Information" />
        <asp:BoundField DataField="VehicleType" HeaderText="Vehicle Requested" />
        <asp:BoundField DataField="ReservationDate" HeaderText="Reservation Date" />
        <asp:BoundField DataField="Destination" HeaderText="Destination" />
        <asp:BoundField DataField="PickupLocation" HeaderText="Pick up" />
    </Columns>
</asp:GridView>

<asp:SqlDataSource ID="resDataSource"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:SiteDatabase%>"
    ProviderName="<%$ ConnectionStrings:SiteDatabase.providerName%>"
    SelectCommand="SELECT * FROM Reservation"></asp:SqlDataSource>

1 Ответ

0 голосов
/ 09 декабря 2018

Aspx: "ProviderName =" <% $ ConnectionStrings: SiteDatabase.providerName%> "SelectCommand =" select * from Reservation ">

        string Filter = "";
        string command = "SELECT * FROM Reservation WHERE";

        if (resIDSearch.Text != "") { Filter = Filter + " ID LIKE '%" + resIDSearch.Text + "%' AND"; }
        if (DFirstName.Text != "") { Filter = Filter + " FirstName LIKE '%" + DFirstName.Text + "%' AND"; }
        if (DLastName.Text != "") { Filter = Filter + " LastName LIKE '%" + DLastName.Text + "%' AND"; }
        if (contactNumSearch.Text != "") { Filter = Filter + " ContactNumber LIKE '%" + contactNumSearch.Text + "%' AND"; }
        if (lotNumSearch.Text != "") { Filter = Filter + " LotNumber LIKE '%" + lotNumSearch.Text + "%' AND"; }
        if (streetSearch.Text != "") { Filter = Filter + " StreetName LIKE '%" + streetSearch.Text + "%' AND"; }
        if (villiageSearch.Text != "") { Filter = Filter + " VilliageName LIKE '%" + villiageSearch.Text + "%' AND"; }
        if (vTypeBox.SelectedIndex != 0) { Filter = Filter + " VehicleType LIKE '%" + vTypeBox.SelectedItem.Text + "%' AND"; }
        if (statusBox.SelectedIndex != 0) { Filter = Filter + " StatusID LIKE '%" + statusBox.SelectedValue + "%' AND"; }
        if (DriIDSearch.Text != "") { Filter = Filter + " UserID LIKE '%" + DriIDSearch.Text + "%' AND"; }
        if (resDateSearch.Text != "") { Filter = Filter + " ReservationDate LIKE '%" + resDateSearch.Text + "%' AND"; }
        if (destSearch.Text != "") { Filter = Filter + " Destination LIKE '%" + destSearch.Text + "%' AND"; }
        if (pickUpSearch.Text != "") { Filter = Filter + " PickupLocation LIKE '%" + pickUpSearch.Text + "%' AND"; }

        if (Filter.Length > 0)
        {
            reservationTable.DataSource = resDataSource;
            string FinalFilter = Filter.Remove(Filter.Length - 3);
            resDataSource.SelectCommand = command + FinalFilter;
            reservationTable.DataBind();

        }
        else {
            reservationTable.DataBind();
        }

Я на самом деле решил ее, изменив команду sqldatasource Select вкод позади, несколько конкатов, и он работал отлично! Следуйте за каждым интервалом текста, как у меня.

...