<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页面的代码。我有一个下拉列表,其中包含以下选项:“已取消”,“已发送”和“已下订单”。我在这里尝试做的是根据下拉列表值过滤数据列表。例如。如果单击“已取消”,则数据列表将仅显示oDelivery_Mode字段下已“已取消”的记录。尝试在线搜索,但大多数是gridview等的解决方案,没有一个是关于数据主义者。任何解决方案?
答案 0 :(得分:0)
此问题并非特定于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>
我不确定connectionstring,select命令和下拉列表的ID。所以我为它们放置了占位符,你需要在那里使用正确的值。
这可以解决您的问题。
答案 1 :(得分: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();
}