Фильтр GridView с SqlDataSource, DropDownLists не работает - PullRequest
0 голосов
/ 29 марта 2012

Я сделал функцию поиска в формате gridview.У меня есть 1 текстовое поле, 2 выпадающих списка и кнопка поиска.Мое текстовое поле используется для поиска фамилии доктора, 1-й и 2-й выпадающий список используются для фильтрации провинции или города, к которой они принадлежат, и для поиска кнопки.

Текстовое поле работает, когда я ищуфамилия доктора, но выпадающих нет.

Вот мой код:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
              AllowSorting="True" AutoGenerateColumns="False" BackColor="White" 
              BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" 
              DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Vertical">
    <AlternatingRowStyle BackColor="#CCCCCC" />
        <Columns>
            <asp:BoundField DataField="DOCTOR_FIRSTNAME" HeaderText="DOCTOR_FIRSTNAME" 
                 SortExpression="DOCTOR_FIRSTNAME" />
            <asp:BoundField DataField="DOCTOR_MI" HeaderText="DOCTOR_MI" 
                 SortExpression="DOCTOR_MI" />
            <asp:BoundField DataField="DOCTOR_LASTNAME" HeaderText="DOCTOR_LASTNAME" 
                 SortExpression="DOCTOR_LASTNAME" />
            <asp:BoundField DataField="ROOM" HeaderText="ROOM" SortExpression="ROOM" />
            <asp:BoundField DataField="SCHEDULE" HeaderText="SCHEDULE" 
                 SortExpression="SCHEDULE" />
            <asp:BoundField DataField="SPECIALIZATION" HeaderText="SPECIALIZATION" 
                 SortExpression="SPECIALIZATION" />
            <asp:BoundField DataField="PROVINCE_NAME" HeaderText="PROVINCE_NAME" 
                 SortExpression="PROVINCE_NAME" />
            <asp:BoundField DataField="CITY_NAME" HeaderText="CITY_NAME" 
                 SortExpression="CITY_NAME" />
        </Columns>
        <FooterStyle BackColor="#CCCCCC" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="Gray" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#383838" />
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MedicolConnectionString %>" 

        SelectCommand="SELECT 
            emed_accredited_providers.DOCTOR_FIRSTNAME, 
            emed_accredited_providers.DOCTOR_MI, 
            emed_accredited_providers.DOCTOR_LASTNAME, 
            emed_doctors_hospitals.ROOM, 
            emed_doctors_hospitals.SCHEDULE, 
            emed_accredited_providers.SPECIALIZATION, 
            emed_province.PROVINCE_NAME, 
            emed_city.CITY_NAME FROM emed_city 
            INNER JOIN emed_province ON emed_city.PROVINCE_CODE = 
            emed_province.PROVINCE_CODE INNER JOIN 
            emed_doctors_hospitals ON emed_city.CITY_CODE = 
            emed_doctors_hospitals.CITY_CODE INNER JOIN 
            emed_accredited_providers ON 
            emed_doctors_hospitals.DOCTOR_CODE = 
            emed_accredited_providers.DOCTOR_CODE WHERE 
            (emed_accredited_providers.DOCTOR_LASTNAME LIKE '%' + 
            @DOCTOR_LASTNAME + '%') OR 
            (emed_doctors_hospitals.PROVINCE_CODE = @PROVINCE_CODE) 
            ORDER BY emed_accredited_providers.DOCTOR_FIRSTNAME"
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox1" 
                Name="DOCTOR_LASTNAME" 
                PropertyName="Text" />
            <asp:ControlParameter ControlID="DropDownList1" 
                Name="PROVINCE_CODE" 
                PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>
    <br />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:DropDownList ID="DropDownList1" runat="server" 
        DataSourceID="SqlDataSource2" DataTextField="PROVINCE_NAME" 
        DataValueField="PROVINCE_NAME">
    </asp:DropDownList>
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MedicolConnectionString %>" 
        SelectCommand="SELECT [PROVINCE_NAME] FROM [emed_province] ORDER BY [PROVINCE_NAME] ASC">
    </asp:SqlDataSource>
    <asp:DropDownList ID="DropDownList2" runat="server">
    </asp:DropDownList>
    <asp:Button ID="Button1" runat="server" Text="Search" />

1 Ответ

0 голосов
/ 29 марта 2012

Используйте DataValueField=PROVINCE_CODE, так как вы используете это значение из выпадающего списка в предложении where для извлечения записи.

В настоящее время PROVINCE_NAME идет к поисковому запросу вместо PROVINCE_CODE.

<asp:DropDownList ID="DropDownList1" runat="server"  
        DataSourceID="SqlDataSource2" DataTextField="PROVINCE_NAME"  
        DataValueField="PROVINCE_NAME"> 

Используйте это вместо вышеупомянутого:

<asp:DropDownList ID="DropDownList1" runat="server"  
        DataSourceID="SqlDataSource2" DataTextField="PROVINCE_NAME"  
        DataValueField="PROVINCE_CODE"> 

Также вам нужно извлечь [PROVINCE_CODE] из таблицы, чтобы связать его с выпадающим списком.

<asp:SqlDataSource ID="SqlDataSource2" runat="server"  
        ConnectionString="<%$ ConnectionStrings:MedicolConnectionString %>"  
        SelectCommand="SELECT [PROVINCE_CODE],[PROVINCE_NAME] FROM [emed_province] ORDER BY [PROVINCE_NAME] ASC"> 
...