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";
        }
    }
}

谢谢!

Listview更新不起作用

您已经得到了它,所以您的数据源设置在page_load上,这很好,但您已经将其封装在中

if (!IsPostBack)
{

这意味着更改数据源的代码只有在您不在回发时才会发生(当您更改下拉列表的值时,您将处于回发中)

通读一遍http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx它将有助于您理解