2013-07-25 5 views
0

Я работаю над HTML-страницей, которая отображает таблицу из базы данных SQL на второй странице, которая сортируется с помощью переключателей на первой странице. Мой предпочтительный язык здесь - C#, и я не могу создать эту вторую страницу правильно. В настоящее время я пытаюсь использовать инструкции IF в сочетании с LINQ, но он не работает. Может ли кто-нибудь посоветовать мне, как действовать? Кстати, я полный любитель.
HTML код:
Нужна помощь в 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

какая технология вы используете? если вы Csharper, Asp.net Webform или MVC? – Sean

+0

Опять .. пожалуйста, покажите нам код, относящийся к вопросу. Вы дали нам разметку .. где эти заявления 'if' вы упомянули? –

ответ

0

Я уверен, что вы не должны использовать параметры вашего заказа пункта.

Если бы это был я, я бы реализовал ObjectDataSource и создавал предложение ORDER BY динамически, используя жесткие кодировки на стороне сервера. Если вы спуститесь по этому маршруту, удостоверьтесь, что ВСЕГДА ИСПОЛЬЗУЙТЕ ПАРАМЕТРЫ ДЛЯ ПОЛУЧЕННЫХ ПОЛЬЗОВАТЕЛЯМИ ДАННЫХ ДЛЯ БЕЗОПАСНОСТИ ВАШЕГО ПРОТИВ SQL INJECTION ATTACKS.

Если вы не занимаетесь классом ObjectDataSource, рассмотрите возможность использования другого SQLDataSource для каждого из ваших параметров сортировки. Каждый из них выполнит другое предложение ORDER BY.

Задайте DataSourceID на основе значения параметра запроса.

Не уверен, что это работает как есть. Возможно, вам придется явно указать источник данных GridView. Если да, не забудьте также явно вызвать Databind().