我一直在开发一个HTML页面,它在第二页上显示SQL数据库中的表格,该页面按第一页上的单选按钮排序。我在这里的首选语言是C#,我似乎无法正确构建第二页。目前我正在尝试将IF语句与LINQ结合使用,但它不起作用。任何人都可以建议我如何进行?顺便说一下,我是一个完全的业余爱好者
HTML代码:
<body>
<h1>Server Request Form</h1>
<form id="sortradio" action="searchresults.aspx" method="get">
<fieldset>
<legend>Sort Order</legend>
<input type="radio" id="titledesc" name="sortorder" value="Title Desc" />
<label for="titledesc">By Title - Descending</label>
<input type="radio" id="titleasc" name="sortorder" value="Title" />
<label for="titleasc">By Title - Ascending</label>
<input type="radio" id="iddesc" name="sortorder" value="Id Desc" />
<label for="iddesc">By ID - Descending</label>
<input type="radio" id="idasc" name="sortorder" value="Id" />
<label for="idasc">By ID - Ascending</label>
<input type="submit" value="Get Info" />
</fieldset>
</form>
</body>
Aspx代码:
<h1>You are sorting by <% Response.Write(Request.QueryString("sortorder"))%>.</h1>
<%
Dim SortingOrder = Request.QueryString("sortorder")
%>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display.">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id" />
<asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
<asp:BoundField DataField="Summary" HeaderText="Summary" SortExpression="Summary" />
<asp:BoundField DataField="Body" HeaderText="Body" SortExpression="Body" />
<asp:BoundField DataField="GenreId" HeaderText="GenreId" SortExpression="GenreId" />
<asp:CheckBoxField DataField="Authorized" HeaderText="Authorized" SortExpression="Authorized" />
<asp:BoundField DataField="CreateDateTime" HeaderText="CreateDateTime" SortExpression="CreateDateTime" />
<asp:BoundField DataField="UpdateDateTime" HeaderText="UpdateDateTime" SortExpression="UpdateDateTime" />
</Columns>
</asp:GridView>
<asp:sqldatasource id="SqlDataSource1" runat="server" connectionstring="<%$ ConnectionStrings:Database1.MDFConnectionString1 %>" providername="<%$ ConnectionStrings:Database1.MDFConnectionString1.ProviderName %>" selectcommand="SELECT [Id], [Title], [Summary], [Body], [GenreId], [Authorized], [CreateDateTime], [UpdateDateTime] FROM [Review] ORDER BY @sortorder">
<Selectparameters>
<asp:querystringparameter name="sortorder" querystringfield="sortorder" />
</Selectparameters>
</asp:SqlDataSource>
</form>`
答案 0 :(得分:0)
我很确定你不应该在你的ORDER BY子句中使用参数。
如果是我,我将实现ObjectDataSource并使用服务器端硬编码替代方法动态创建我的ORDER BY子句。如果您沿着这条路走下去,请确保始终使用用户提交的数据参数来保护自己免受SQL INJECTION攻击。
如果您还没有解决ObjectDataSource类问题,那么请考虑为每个排序选项实现不同的SQLDataSource。每个都将实现不同的ORDER BY子句。
根据查询参数的值设置DataSourceID。
不确定它是否按原样运行。您可能必须明确设置GridView的DataSource。如果是这样,请记得明确地调用Databind()。