2013-07-17 39 views
0

我一直在嘗試通過依賴另一個html頁面的表單來獲取aspx頁面來更改sql查詢的順序。它不斷給我一個「解析器錯誤信息:服務器標記不正確。」我如何修復下面的代碼?服務器標籤沒有很好地形成 - SQL查詢

<% 
    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:PLANETWROX.MDFConnectionString1 %>" deletecommand="DELETE FROM [Review] WHERE [Id] = @Id" insertcommand="INSERT INTO [Review] ([Title], [Summary], [Body], [GenreId], [Authorized], [CreateDateTime], [UpdateDateTime]) VALUES (@Title, @Summary, @Body, @GenreId, @Authorized, @CreateDateTime, @UpdateDateTime)" providername="<%$ ConnectionStrings:PLANETWROX.MDFConnectionString1.ProviderName %>" selectcommand="SELECT [Id], [Title], [Summary], [Body], [GenreId], [Authorized], [CreateDateTime], [UpdateDateTime] FROM [Review] ORDER BY Request.QueryString("sortorder")" updatecommand="UPDATE [Review] SET [Title] = @Title, [Summary] = @Summary, [Body] = @Body, [GenreId] = @GenreId, [Authorized] = @Authorized, [CreateDateTime] = @CreateDateTime, [UpdateDateTime] = @UpdateDateTime WHERE [Id] = @Id"> 
     <DeleteParameters> 
      <asp:Parameter Name="Id" Type="Int32" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="Title" Type="String" /> 
      <asp:Parameter Name="Summary" Type="String" /> 
      <asp:Parameter Name="Body" Type="String" /> 
      <asp:Parameter Name="GenreId" Type="Int32" /> 
      <asp:Parameter Name="Authorized" Type="Boolean" /> 
      <asp:Parameter Name="CreateDateTime" Type="DateTime" /> 
      <asp:Parameter Name="UpdateDateTime" Type="DateTime" /> 
     </InsertParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="Title" Type="String" /> 
      <asp:Parameter Name="Summary" Type="String" /> 
      <asp:Parameter Name="Body" Type="String" /> 
      <asp:Parameter Name="GenreId" Type="Int32" /> 
      <asp:Parameter Name="Authorized" Type="Boolean" /> 
      <asp:Parameter Name="CreateDateTime" Type="DateTime" /> 
      <asp:Parameter Name="UpdateDateTime" Type="DateTime" /> 
      <asp:Parameter Name="Id" Type="Int32" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 
    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
     ShowSelectButton="True" ButtonType="Button"></asp:CommandField> 
    <asp:Database.Query(Select * From Review [Order By<% Response.Write(Request.QueryString("sortorder"))%>])></asp:Database.Query> 
    </form> 

回答

3

你的問題是在這裏:

selectcommand="SELECT [Id], [Title], [Summary], [Body], [GenreId], [Authorized], [CreateDateTime], [UpdateDateTime] FROM [Review] ORDER BY Request.QueryString("sortorder")" 

Request.QueryString("sortorder")"雙引號過早關閉標籤。而且你不能直接使用查詢字符串。

應該是這樣的:

SelectCommand="Select EmployeeID, LastName From Employees where EmployeeID = @empId"> 
    <SelectParameters> 
     <asp:QueryStringParameter  Name="empId" QueryStringField="empId" /> 
    </SelectParameters> 

從該頁面摘自:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.querystringparameter.querystringfield.aspx

+0

那麼這解決了我的服務器標籤問題。只有現在,我有一個錯誤,名爲「ORDER BY number 1標識的SELECT項包含一個變量作爲標識列位置的表達式的一部分,變量只有在引用列名的表達式進行排序時才允許。」 – GPinskiy

0
<% should be <%= in order by 

解釋已經在這裏:script tags in html

,並從該刪除的Response.Write聲明。

+0

<%=和<%Response.Write是等效的。 <%=是Response.Write的快捷方式。 – nickles80

相關問題