我有非常基本的产品数据表,我将网格视图数据源设置为sqlDataSoruce,分页和排序选项为true。
但我也有一个DropDownList,如果用户选择某个产品组(蔬菜,水果,冷冻等),网格视图只显示该产品组项目。
{{1}}
网格显示从下拉列表中选择的groupID中的所有产品,但问题是当我想按名称或价格对其进行排序时,网格视图会再次显示所有产品。
如果您知道如何解决此问题,我将非常感激。 谢谢。
答案 0 :(得分:1)
您需要保留下拉列表的 String timeOut = "1900-01-01 11:32:00";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = formatter.parse(timeOut);
System.out.println(formatter.format(date));
,最简单的方法是以声明方式绑定所有数据。像这样:
1900-01-01 11:32:00
BUILD SUCCESSFUL (total time: 0 seconds)
不需要代码。
旁注:永远不要像这样构建SQL查询字符串
SelectedValue
此类代码易受<asp:DropDownList ID="ddCategory" runat="server" DataTextField="categoryname"
DataValueField="categoryid"
AppendDataBoundItems="true" DataSourceID="sqlCategory" AutoPostBack="true">
<asp:ListItem Value="0" Text="- Select -"></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="sqlCategory" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindCnn %>"
SelectCommand="select categoryid,categoryname from dbo.categories">
</asp:SqlDataSource>
<asp:GridView ID="gvProducts" runat="server" AutoGenerateColumns="False" AllowPaging="True" PageSize="5" DataKeyNames="ProductID" DataSourceID="sqlNWind">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID" InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="sqlNWind" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindCnn %>"
SelectCommand="SELECT Products.ProductID, Products.ProductName FROM Products where (@categoryid=0 or CategoryID=@categoryId)">
<SelectParameters>
<asp:ControlParameter Name="categoryid" ControlID="ddCategory" Type="Int32" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
攻击。始终使用参数。
答案 1 :(得分:0)
您是否将数据反弹到gridview,例如以下
GridView1.DataBind();