Listview更新不起作用
本文关键字:不起作用 更新 Listview | 更新日期: 2023-09-27 17:57:50
我正试图使用下拉列表更改DataSource使用的Select命令。加载页面时,会根据所选索引设置select命令。当我更改下拉列表时,页面会刷新,但数据不会!我哪里错了?
.aspx文件
<asp:DropDownList ID="filmFilter" runat="server" OnSelectedIndexChanged="filmFilter_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem Value="">Filter</asp:ListItem>
<asp:ListItem Value="priceASC">Price: Low-High</asp:ListItem>
<asp:ListItem Value="priceDSC">Price: High-Low</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringFilms %>"></asp:SqlDataSource>
<asp:ListView ID="ListView1" runat="server" DataKeyNames="filmID" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="ListView1_SelectedIndexChanged">
<ItemTemplate>
...
</ItemTemplate>
<LayoutTemplate>
...
</LayoutTemplate>
</asp:ListView>
代码隐藏-页面加载:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (filmFilter.SelectedIndex == 0)
{
SqlDataSource1.SelectCommand = "SELECT * FROM [films]";
}
if (filmFilter.SelectedIndex == 1)
{
SqlDataSource1.SelectCommand = "SELECT * FROM [films] ORDER BY [filmPrice]";
}
if (filmFilter.SelectedIndex == 2)
{
SqlDataSource1.SelectCommand = "SELECT * FROM [films] ORDER BY [filmPrice] DESC";
}
}
}
谢谢!
您已经得到了它,所以您的数据源设置在page_load上,这很好,但您已经将其封装在中
if (!IsPostBack)
{
这意味着更改数据源的代码只有在您不在回发时才会发生(当您更改下拉列表的值时,您将处于回发中)
通读一遍http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx它将有助于您理解