2014-04-11 58 views
0

我試圖改變選擇命令我的數據源使用使用下拉列表。加載頁面時,根據所選索引設置選擇命令。當我更改下拉列表時,頁面會刷新,但數據不會!我哪裏錯了?Listview更新不工作

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

謝謝!

+1

認沽幫助'SelectCommand'更改代碼INSI de'filmFilter_SelectedIndexChanged'事件。 – Bharadwaj

+0

是的,它的作品歡呼聲,它很煩人! – horHAY

回答

2

你已經有了它讓你的數據源上設置這是很好的在Page_Load但你在

if (!IsPostBack) 
{ 

包裹它這意味着你的代碼,以更改數據源將只有當你是不是在發生回發(當您更改下拉的價值,你會在回傳)

有一個讀通過 http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx 它將與您的理解