2012-03-29 66 views
0

我做了一個gridview格式的搜索功能。我有1個文本框,2個下拉列表和一個搜索按鈕。我的文本框用於搜索醫生的姓氏,第一個和第二個下拉菜單用於過濾他們所屬的省或城市以及要執行的搜索按鈕。過濾GridView與SqlDataSource,DropDownLists不工作

當我搜索醫生的姓氏時,該文本框正在工作,但下拉菜單沒有。

這裏是我的代碼:

<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

需要看看你在做什麼下拉事件。 (C#代碼) - 基本上你需要改變基於過濾器和文本框的數據源,如果文本框有數據和下拉不要,然後使用這個數據源,否則如果文本框和兩個下拉使用這個其他等。 – user710502 2012-03-29 06:50:01

+0

我的.cs文件中沒有代碼。我把它放在.aspx裏面。我只是綁定第一個下拉列表的值。就這樣。我認爲這個問題是我的問題或其他問題。 編輯:這意味着我必須改變我的下拉菜單的數據源,並使用我用於gridview的數據源? – Lyard 2012-03-29 06:52:12

+0

不,您需要c#代碼,因爲您需要根據場景告訴服務器使用哪個數據源 – user710502 2012-03-29 06:53:09

回答

0

使用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">