星期日, 1月 25, 2009

dropdownlist篩選gridview初始頁面為空值的問題

今天在小舖看到一個問題..設計者設計一個介面讓用戶用dropdowlist來篩選gridview要顯示出來的item..但是要在一開始開啟網頁的時候..先顯示出全部的資料..之後再篩選想要的資料..這個問題的處理想法就是在where的sql statement那用case when來處理一下就可以完成了..我寫個simple code..參考一下ㄅ..

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [ProductID], [ProductName] FROM [Alphabetical list of products]">
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"
DataSourceID="SqlDataSource1"
DataTextField="ProductName" DataValueField="ProductID" AutoPostBack="True">
<asp:ListItem Value="0">請選擇</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="
SELECT [ProductID], [ProductName], [SupplierID]
FROM [Alphabetical list of products]
WHERE ([ProductID] = case when @ProductID = 0 then ProductID else @ProductID end)"
>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="ProductID"
PropertyName="SelectedValue"
Type="Int32" ConvertEmptyStringToNull="false" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ProductID"
DataSourceID="SqlDataSource2">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID"
ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />
<asp:BoundField DataField="SupplierID" HeaderText="SupplierID"
SortExpression="SupplierID" />
</Columns>
</asp:GridView>

試試看ㄅ..Big GrinBig GrinBig GrinBig GrinBig Grin..

1 則留言:

3times1day 提到...

你這篇程式寫得真好。我不認識你,但是讀著這範例,我都要起雞皮疙瘩了(這是恭維)。