【问题标题】:How do I filter a DataList?如何过滤数据列表?
【发布时间】:2017-01-30 16:48:51
【问题描述】:
<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页面的代码。我有一个包含以下选项的下拉列表:“Cancelled”、“Delivered”和“Order Placed”。我在这里要做的是根据下拉列表值过滤数据列表。例如。如果我单击“取消”,数据列表将仅显示在 oDelivery_Mode 字段下已“取消”的记录。尝试在线搜索,但大多数是 gridview 等的解决方案,没有一个是关于数据列表的。有什么解决办法吗?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    此问题并非特定于 GridView 或 DataList。您需要做的就是设置 SqlDataSource 的某些属性。

    您可以使用 SqlDataSource 的 FilterParameters 和 FilterExpression 属性。

    <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> 
    

    我不确定连接字符串,选择下拉列表的命令和 ID。所以我已经为他们放置了占位符,你需要在那里使用适当的值。

    这应该可以解决您的问题。

    【讨论】:

      【解决方案2】:

      您需要使用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();
      }
      

      【讨论】:

        猜你喜欢
        • 2015-10-02
        • 1970-01-01
        • 1970-01-01
        • 2018-04-17
        相关资源
        最近更新 更多