2017-01-30 4 views
0
<asp:DataList runat="server" DataSourceID="SqlDataSource1" ID="orderdatalist"> 
     <ItemTemplate> 
      <table> 
       <td> 
        Order Number: 
        <br /> 
        <asp:Label DataField="oID" Text='<%# Eval("oID") %>' ID="orderidlabel"></asp:Label> 
       </td>     
       <td> 
        USER ID: 
        <br /> 
        <asp:Label runat="server" DatField="oUser_ID" Text='<%# Eval("oUser_ID") %>'></asp:Label> 
       </td> 
       <td> 
        ORDER STATUS: 
        <br /> 
        <asp:Label runat="server" DataField="oDelivery_Status" Text='<%# Eval("oDelivery_Status") %>'></asp:Label> 
       </td>     
      </table> 
     </ItemTemplate> 
    </asp:DataList> 

Выше приведен код для моей страницы asp. У меня есть раскрывающийся список со следующими параметрами: «Отменено», «Поставлено» и «Заказ размещен». То, что я пытаюсь сделать здесь, - , чтобы отфильтровать каталоги данных в соответствии с выпадающим списком. Например. Если я нажму «Отменил», то datalist отобразит только записи, которые «Отменили» в поле oDelivery_Mode. Пробовал поиск в Интернете, но большинство из них являются решениями gridview и т. Д., И ни один из них не связан с данными. Любые решения?Как фильтровать DataList?

ответ

0

Эта проблема не относится к GridView или DataList. Все, что вам нужно сделать, это установить определенные свойства SqlDataSource.

Вы можете использовать фильтры FilterParameters и FilterExpression для SqlDataSource.

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnctionString="<<connectionstring>>" SelectCommand="<<selectcommand>>" FilterExpression="oDelivery_Status = {0}"> 
    <FilterParameters> 
    <asp:ControlParameter Name="OrderStatus" ControlID="<<dropdownlistid>>" PropertyName="SelectedValue" /> 
    </FilterParameters> 
<asp:SqlDataSource> 

Я не уверен в строке соединения, выберите команду и идентификатор выпадающего списка. Поэтому я поставил им заполнители, вам нужно использовать правильные значения.

Это должно решить вашу проблему.

0

Вам необходимо использовать FilterParameters. Измените значения в соответствии с вашими потребностями.

<asp:DataList runat="server" DataSourceID="SqlDataSource1" ID="orderdatalist"> 
       <ItemTemplate> 
        <table> 
         <td><%# Eval("OrderID") %> 
         </td> 
         <td><%# Eval("OrderName") %> 
         </td> 
         <td><%# Eval("OrderStatus") %> 
         </td> 
        </table> 
       </ItemTemplate> 
      </asp:DataList> 
      <asp:SqlDataSource 
       ID="SqlDataSource1" 
       EnableCaching="true" 
       DataSourceMode="DataSet" 
       runat="server" 
       SelectCommand="select * from [Order]" 
       ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
       FilterExpression="OrderStatus = '{0}'"> 
       <FilterParameters> 
        <asp:ControlParameter 
         Name="orderparam" 
         ControlID="ddlOrderStatus" 
         PropertyName="SelectedValue" /> 
       </FilterParameters> 
      </asp:SqlDataSource> 
      <asp:DropDownList ID="ddlOrderStatus" runat="server" OnSelectedIndexChanged="ddlOrderStatus_OnSelectedIndexChanged" AutoPostBack="true"> 
       <asp:ListItem Text="Cancelled" Value="Cancelled"></asp:ListItem> 
       <asp:ListItem Text="Delivered" Value="Delivered"></asp:ListItem> 
       <asp:ListItem Text="OrderPlaced" Value="OrderPlaced"></asp:ListItem> 
      </asp:DropDownList> 

protected void ddlOrderStatus_OnSelectedIndexChanged(object sender, EventArgs e) 
{ 
    orderdatalist.DataBind(); 
} 
Смежные вопросы